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*"')
クエリする列にはフルテキスト インデックスが付けられている必要があります。
参照: