
column1~column3のデータに文字検索をしたいのですが、
下記のような不恰好なSQLしか思いつきません、、。
select * from tb where
( column1 like '%word1%' or column2 like '%word1%' or column3 like '%word1%' )
and ( column1 like '%word2%' or column2 like '%word2%' or column3 like '%word2%' )
and ( column1 like '%word3%' or column2 like '%word3%' or column3 like '%word3%' )
試しに、
select * from tb where
( ( column1 or column2 or column3) like '%word1%' )
and ( ( column1 or column2 or column3) like '%word2%' )
and ( ( column1 or column2 or column3) like '%word3%' )
と考えたのですが、これですと検索結果0件になってしまいます。
もっとスマートなSQL文がありましたら、ご教授頂きたいです。
No.1ベストアンサー
- 回答日時:
文字列を連結して、あたかも一つの列であるように見立てた上でLIKEとする。
ただし、3つのカラムのうちの一つでもNULLだと全体がNULLになる。
参考URLの5番目に対策あり。
参考URL:http://www.orangesoft.co.jp/RDB/rdb_memo_strcat. …
No.2
- 回答日時:
#1です。
select * from tb where (column1 || column2 || column3) like '%word1%'
ということです。(NULLの件、未考慮)
"|" はShift+¥で出ます。2回押してね。
ただし、
word1が "ABC"であって、
column1 = "A"
column2 = "B"
column3 = "C"
みたいなデータを拾ってしまうオマヌケもありうるので、
where (column1 || '/' || column2 ||'/' || column3)
のような「セパレータ」を挟むことも考慮してください。
もちろん「セパレータ」もword1に出現しないものですね。
回答ありがとうございます!
SQL文は以下にしたら成功しました。
select * from tb where
( concat( column1 , column2 , column3) like '%word1%' )
and ( concat( column1 , column2 , column3) like '%word2%' )
and ( concat( column1 , column2 , column3) like '%word3%' )
情報ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LIKEの右側にカラムを指定でき...
-
Android javaで検索プログラム...
-
LIKE演算子の%について教えて...
-
MySQLで複数フィールドから同一...
-
SELECT文で、指定カラム以外の...
-
DBの定義のサイズを大きくし過...
-
一部のカラムでdistinctし全て...
-
SQLでカラムを追加し、条件に合...
-
エクセルかワードで家系図を作...
-
頭に0が付く文字
-
【Transact-sql】 where条件、i...
-
他のシートの検索
-
AUTO_INCREMENTに0はダメ?
-
GREATESTで NULLをスルーする方...
-
UNIONする際、片方テーブルしか...
-
テーブルの列数を調べたい
-
now()かCURRENT_TIMESTAMPか
-
SQL Serverのntext型で一意イン...
-
SQLServerでNULLを挿入したいです
-
最大2147483647なのに何故int(1...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LIKEの右側にカラムを指定でき...
-
複数カラムに対するLIKE文の最適化
-
mysqlで50音順にorder byしたい。
-
スペースによる絞り込み検索をS...
-
複数キーワードを複数カラムに...
-
End Ifに対応するIfブロックが...
-
PL/SQLでの文字列比較
-
whereで全てを検索する方法
-
SQLステータス:37000について
-
WHERE `年月日` = '晴' OR `年...
-
Access & ADOで「'」のLIKE検索
-
MySQLのあいまい検索について
-
LIKE演算子の%について教えて...
-
LIKEは類似一致検索なのでしょ...
-
直角三角形でもM、NはOと一致し...
-
複数の条件での絞り込み検索の仕方
-
前と後という言葉の意味
-
私は相手の言葉と行動が一致し...
-
ORDER BY CASEで異なる並替え...
-
場合の数 中学入試 5枚のカード
おすすめ情報