配列の中に複数の条件全てみたすレコードを抽出する
対象はGooleCloudBigqueryですが、Postgres等Arrayを持っているDBも同様と思います
id:1, arr_val: [{"a":"111"},{"a":"222"},{"a":"333"}]
id:2, arr_val: [{"a":"222"},{"a":"444"},{"a":"666"}]
・・・
といったデータ構造の時に
"a"が111と222両方を含む要素を持ったレコードを抽出したいです。
(例の場合id1のレコードが引っかかるようにしたいです。)
SELECT
arr_val
FROM
`テーブル名`,
UNNEST(arr_val) AS line
WHERE
REGEXP_CONTAINS(line.a, r"正規表現") ) #条件1
and
REGEXP_CONTAINS(line.a, r"正規表現") ) #条件2
の様にやってみましたが、条件が一つの時はそれぞれうまく行きますが
AND条件とすると検索結果が0となってしまいました。