2017-05-23 19 views
0

Bigqueryで、WHERE項目IN( '%xxxxxxxxxx'、 '%xxxxxxxxxx')を選択しようとしています。しかし、私がそれを引っ張っても結果は返ってこない。しかし、ワイルドカード%を取り除くと結果が返されます。ここで誤ったワイルドカード演算子を使用していますか?ワイルドカード%演算子がbigqueryで動作していません

ありがとうございます!

アレックス

答えて

1

あなたが代わりにLIKE演算子を使用する必要があります。例えば、

#standardSQL 
SELECT * 
FROM YourTable 
WHERE EXISTS (
    SELECT 1 
    FROM UNNEST(['%pattern1', '%pattern2']) AS pattern 
    WHERE item LIKE pattern 
); 
以下
+0

感謝を参照してください以下のようにダミーデータでそれで遊ぶことができますBigQueryの標準SQL

ため
#standardSQL SELECT * FROM YourTable WHERE REGEXP_CONTAINS(item, r'xxxxxxxxxx$|yyyyyyyy$') 

です発送用!あなたはレガシーSQLでこれをどうやってやるだろうか?私の質問はすべて遺産です。 – Alex

+0

クエリにレガシーSQLを使用する理由はありますか? BigQueryチームは可能な限り標準SQLを使用することをお勧めします。アクティブな開発ではこれが唯一の実装であるためです。代わりに標準SQLを使用するようにクエリの一部を変更する場合は、[移行ガイド](https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy)を参照してください。 -sql)。 –

1

はあなたが

#standardSQL 
WITH data AS (
    SELECT * 
    FROM UNNEST(['a_item', 'b_item', 'a_piece', 'b_piece', 'a_part', 'b_part']) AS item 
) 
SELECT * 
FROM data 
WHERE REGEXP_CONTAINS(item, r'item$|part$') 

よりおよそREGEXP_CONTAINS

関連する問題