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で質問しましょう!
似たような質問が見つかりました
- 英語 カンマの意味 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の右側にカラムを指定でき...
-
社名でデータ抽出できる検索シ...
-
複数のフィールドの検索
-
前と後という言葉の意味
-
エクセルで2つのセルの値が同じ...
-
SQL 複数条件を設定
-
LIKE演算子の%について教えて...
-
INDIRECT関数の代替方法は?
-
SQLServerでNULLを挿入したいです
-
SELECT文で、指定カラム以外の...
-
JDBCドライバがない?
-
DBの定義のサイズを大きくし過...
-
MySQLで先頭にカラムを追加
-
エクセルかワードで家系図を作...
-
SQLで、行ごとのとある要素を比...
-
SQLでカラムを追加し、条件に合...
-
ユニーク制約とユニークインデ...
-
連続番号機能を使ってレコード...
-
MySQLのKey属性「MUL」について
-
now()かCURRENT_TIMESTAMPか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LIKEの右側にカラムを指定でき...
-
mysqlで50音順にorder byしたい。
-
whereで全てを検索する方法
-
PL/SQLでの文字列比較
-
スペースによる絞り込み検索をS...
-
複数カラムに対するLIKE文の最適化
-
End Ifに対応するIfブロックが...
-
複数キーワードを複数カラムに...
-
LIKE演算子の%について教えて...
-
SELECT、特定カラムの文字列が...
-
Access & ADOで「'」のLIKE検索
-
以下の式の後の部分のMySQLのSQ...
-
SQLステータス:37000について
-
複数条件による検索
-
エクセルで2つのセルの値が同じ...
-
Accessで文字列の一部を抽出す...
-
場合の数 中学入試 5枚のカード
-
MySQLのあいまい検索について
-
特定の単語の検索除外
-
INDIRECT関数の代替方法は?
おすすめ情報