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.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%' )
情報ありがとうございました!
No.1ベストアンサー
- 回答日時:
文字列を連結して、あたかも一つの列であるように見立てた上でLIKEとする。
ただし、3つのカラムのうちの一つでもNULLだと全体がNULLになる。
参考URLの5番目に対策あり。
参考URL:http://www.orangesoft.co.jp/RDB/rdb_memo_strcat. …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 カンマの意味 2 2022/10/25 08:16
- Visual Basic(VBA) エクセル VBA 難しいです 1 2023/02/21 15:39
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- Excel(エクセル) 何故割り算なのでしょうか? 6 2022/11/09 13:30
- 英語 文の構造をご教示ください 2 2023/01/01 18:03
- Oracle データベースのカラムの型がCHAR型の場合で 値にシングルコーテーションつけなくても動作する場合と数 3 2022/04/25 12:00
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) Excelでなぜこのような式をつかっているのでしょうか、行に1,2,3と連番を振るだけなのに 5 2023/04/08 20:00
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LIKEの右側にカラムを指定でき...
-
スペースによる絞り込み検索をS...
-
Accessで文字列の一部を抽出す...
-
mysqlで50音順にorder byしたい。
-
PL/SQLでの文字列比較
-
DBの定義のサイズを大きくし過...
-
INDIRECT関数の代替方法は?
-
一部のカラムでdistinctし全て...
-
エクセルかワードで家系図を作...
-
テーブルの列数を調べたい
-
SELECT文で、指定カラム以外の...
-
now()かCURRENT_TIMESTAMPか
-
SQLServerでNULLを挿入したいです
-
DBエラーの意味
-
ドロップダウンリストの連動し...
-
ユニーク制約とユニークインデ...
-
SQLでカラムを追加し、条件に合...
-
UNIONする際、片方テーブルしか...
-
自動販売機でホットとアイスが...
-
JDBCドライバがない?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LIKEの右側にカラムを指定でき...
-
スペースによる絞り込み検索をS...
-
mysqlで50音順にorder byしたい。
-
複数カラムに対するLIKE文の最適化
-
whereで全てを検索する方法
-
LIKE演算子の%について教えて...
-
PL/SQLでの文字列比較
-
End Ifに対応するIfブロックが...
-
Accessで文字列の一部を抽出す...
-
複数キーワードを複数カラムに...
-
SQLで条件の文字列を含んでいる...
-
SQLステータス:37000について
-
MySQLのあいまい検索について
-
SQL文に間違いがありますでしょ...
-
ORDER BY CASEで異なる並替え...
-
SELECT、特定カラムの文字列が...
-
Access & ADOで「'」のLIKE検索
-
複数条件による検索
-
MySQL 配列もどきを条件式に
-
INDIRECT関数の代替方法は?
おすすめ情報