検索画面のフォームに
テキストボックスA
リストボックスA
の2項目があったとします。
リストボックスAには「含む」「先頭一致」のステータスを持つリストがあり、
それぞれテキストボックスAに対応しています。
やりたいこと。
テキストボックスAに値が入っていて、リストボックスAが「含む」の場合
SQL
1select 2 * 3from 4 hogeMst 5where 6 hoge like %[リストボックスA.value]%
テキストボックスAに値が入っていて、リストボックスAが「先頭一致」の場合
SQL
1select 2 * 3from 4 hogeMst 5where 6 hoge like [リストボックスA.value]%
テキストボックスに値が入っていない場合
SQL
1select 2 * 3from 4 hogeMst
で流れるSQLを一本で作るにはどうすれば宜しいでしょうか。
自分が考えたのはこんな感じですが、
無論これでは無理です・・・。
SQL
1declere 2 textBoxA varchar(10); 3 listBoxA char(1); 4begin 5 textBoxA := '12345' 6 listBoxA := '1' --「含む」 7 8select 9 * 10from 11 hogeMst 12where 13 case textBoxA 14 when null then 15 nothing 16 when is not null then 17 case listBoxA 18 when '1' then 19 hoge like %listBoxA% 20 when '2' then 21 hoge like listBoxA% 22end;
そもそもwhere句の後にcase書いている時点で、
whereが有効なので、nothingなんて入ったとしてもエラーなんですけど、
思考はこんな感じです・・・。
javaでStringBuilder使えればできそうなんですが、
製造規約てきな奴で・・・。
お願いします。
回答1件
あなたの回答
tips
プレビュー