BigQueryで%のような制限を加えて単純なクエリを実行しようとしていますが、LIKEが構文に含まれていないので、どのように実装できますか?
4 に答える
LIKEはBigQuery標準SQLで公式にサポートされています-https ://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#comparison_operators
また、レガシーSQLでも機能すると思います。
strが正規表現に一致する場合、REGEXP_MATCHはtrueを返します。正規表現を使用しない文字列照合の場合は、REGEXP_MATCHの代わりにCONTAINSを使用します。
https://developers.google.com/bigquery/docs/query-reference#stringfunctions
REGEXP_MATCHは、使用方法を知っている場合に最適ですが、「。」、「$」、「?」などの一般的に使用される特殊文字がないかどうかわからない場合は、ルックアップ文字列では、LEFT('str', numeric_expr)
またはを使用できますRIGHT('str', numeric_expr)
。つまり、名前のリストがあり、「sa%」のような名前をすべて返したい場合は、次を使用します。
select name from list where LEFT(name,2)='sa';
(2は「sa」の長さです)
さらに、ある列の値が別の列の値と似ている場所を言いたい場合は、2をとに交換して、次のようにすることができLENGTH(column_with_lookup_strings)
ます='sa'
。=column_with_lookup_strings
select name from list where LEFT(name,LENGTH(column_with_lookup_strings))= column_with_lookup_strings;