1. ホーム
  2. sql

[解決済み】SQLで "LIKE "と "IN "の組み合わせはあるのか?

2022-03-24 02:32:34

質問

SQLでは、(悲しいかな)よく"を使わなければなりません。 LIKE 正規化のほぼすべてのルールに違反するデータベースのため、" 条件が必要です。今すぐには変えられません。でも、それは質問とは関係ありません。

さらに、私はよく次のような条件を使います。 WHERE something in (1,1,2,3,5,8,13,21) を使用すると、SQL 文の可読性と柔軟性が向上します。

複雑なサブセレクトを書かずに、この2つを組み合わせる方法はないでしょうか?

のような簡単なものが欲しい。 WHERE something LIKE ('bla%', '%foo%', 'batz%') ではなく、このように

WHERE something LIKE 'bla%'
OR something LIKE '%foo%'
OR something LIKE 'batz%'

私はここでSQl ServerとOracleを使っていますが、どのRDBMSでもこれが可能なのか興味があります。

どのように解決するのですか?

SQLではLIKE & INの組み合わせはなく、ましてやTSQL (SQL Server)やPLSQL (Oracle)ではありません。 その理由の一つは、FTS(Full Text Search)が推奨される代替手段であるためです。

Oracle と SQL Server の FTS 実装はどちらも CONTAINS キーワードをサポートしていますが、構文はまだ若干異なっています。

オラクル

WHERE CONTAINS(t.something, 'bla OR foo OR batz', 1) > 0

SQL Serverです。

WHERE CONTAINS(t.something, '"bla*" OR "foo*" OR "batz*"')

クエリするカラムはフルテキストインデックス化されている必要があります。

参考にしてください。