SQL には「LIKE」と「IN」の組み合わせがありますか? 質問する

SQL には「LIKE」と「IN」の組み合わせがありますか? 質問する

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 でも可能かどうか興味があります。

ベストアンサー1

SQL には LIKE と IN の組み合わせはなく、TSQL (SQL Server) や PLSQL (Oracle) でも同様です。その理由の 1 つは、フルテキスト検索 (FTS) が推奨される代替手段であるためです。

Oracle と SQL Server の両方の FTS 実装は CONTAINS キーワードをサポートしていますが、構文は若干異なります。

オラクル:

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

SQLサーバー:

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

クエリする列にはフルテキスト インデックスが付けられている必要があります。

参照:

おすすめ記事