- 締切済み
複数項目の一括検索
SQLで、指定したキーワードで指定した複数の項目についてすべて検索したいと思います。 ※たとえば 項目1~項目10を持つテーブルのうち、 項目1、項目3、項目5、項目8のいずれかに"データ"という文字を含むレコードを抽出する (項目の選択はユーザ任意です) この場合、WHERE句でANDでつなげればよいのでしょうが、これが果たして効率や、プログラムソースコードの美しさからいって、ベストなのか迷ってます。 こういった場合の常套手段がありましたら教えてください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- tonmaji
- ベストアンサー率7% (1/14)
動的SQLが一番汎用性があるといえばありますが、 性能面で気になるのであれば、 oracleであれば以下のようなことができた気がします SELECT * FROM テーブル WHERE 項目1 = DECODE(変数1,NULL,項目1,変数1) OR 項目2 = DECODE(変数2,NULL,項目2,変数2) OR 項目3 = DECODE(変数3,NULL,項目3,変数3) OR 項目4 = DECODE(変数4,NULL,項目4,変数4) OR 項目5 = DECODE(変数5,NULL,項目5,変数5) OR 項目6 = DECODE(変数6,NULL,項目6,変数6) OR 項目7 = DECODE(変数7,NULL,項目7,変数7) OR 項目8 = DECODE(変数8,NULL,項目8,変数8) OR 項目9 = DECODE(変数9,NULL,項目9,変数9) OR 項目10 = DECODE(変数10,NULL,項目10,変数10) 上のSQLは、変数1から10までの値がNULLの場合、 それぞれの項目を条件として検索するので、 指定した項目のみの検索が可能です プログラムソースが何であるかにもよりますがね。 やりたいことと違っていたらすみません
補足
早速のお返事、ありがとうございます。 わたしはoracleを知りませんので調べましたら、decodeとはif文的に使える便利な関数ですね。 ちなみに、ACCESSをADOで読み込みます。 やりたいことは、とある博物館の資料データで、 採集者、発掘地、使用法、備考等々の項目すべてを同じキーワードで検索するといったことです。