[Seasar-user:13606] Re: [S2JDBC] SimpleWhereでの'_'や'%'のlike検索について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 4月 7日 (月) 21:00:05 JST


小林 (koichik) です.

Date:    Mon, 7 Apr 2008 17:53:09 +0900
From:    "Noritaka Ishizumi" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:13600] Re: [S2JDBC] SimpleWhereでの'_'や'%'のlike検索について

> 例えばescapeの文字を'$'とした場合、
> SQL自動生成の部分で、元のvalueの'$'を'$$'に自動変換してしまえば、
> 検索対象がどのような文字でも特に問題も無いかと思います。

なるほど,starts(),ends(),contains() に関しては
それでいいかもしれませんね.

ちょっと気になるのは,標準 SQL ではエスケープ文字の
後ろに記述できる文字が '%' と '_' に制限されているような
記述が「SQL: 1999 リレーショナル言語詳解」にあること.
Oracle では大丈夫そうですが,他の RDBMS でどうなのか?

それから,like() に関してはワイルドカード込みの
検索文字列を引数で指定するため,自動変換を
するわけにはいきません.

like("aaa", "x%y$%z$$", '$')

のように明示的に指定してもらうしかないかと.

> startsでchar escapeまで指定できると、ちょっとSQLが見えすぎかなという気もします。

S2JDBC は SQL を文字列の操作で組み立てる代わりに
API で組み立てるというだけで,SQL を隠してはいないので
それは問題ではないと思います.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内