❄️

Snowflakeでまとめて曖昧検索をする

に公開

SQLでの曖昧検索は、「LIKE '%val1%'」とするとできますよね。
ただ、もし複数条件で、曖昧検索をしたい場合、次のようにorでつないで書いていないでしょうか。

x1 LIKE '%val1%' or x1 LIKE '%val2%'

これが、パターンが増えていくととても面倒なことになります。
BigQueryでは、こちらに書いたようなやり方があったのですが、Snowflakeではどうするんだろうと思って調べてみました。

x1 ILIKE ANY ('%val1%', '%val2%')

なんと、ILIKE ANYという関数があるんですね!

関数のリファレンスだと、

大文字小文字を区別せずに比較し、1つ以上の指定されたパターンのいずれかと文字列を一致させます。この関数を WHERE 句で使用して、一致するものをフィルターします。大文字と小文字を区別する一致では、代わりに LIKE ANY を使用します。

となっていて、大文字・小文字の区分だけがフォーカスされているんですが、実際にはまとめて曖昧検索もできてしまいます。

これで、きれいなSQL文が書けますね。

Discussion