Вы должны использовать ниже регулярное выражение
REGEXP_EXTRACT_ALL(a_json, r'\d+') as numbers
, в этом случае вывод будет
Row id a_json numbers
1 111 {key:A,values:[123,2345,456,78,9]} 123
2345
456
78
9
2 222 {key:A,values:[1112, 323, 11]} 1112
323
11
В качестве альтернативы - вы можете использовать версию ниже - в этом случае вы можете опустить WHERE a_json like "%values%"
SPLIT(REGEXP_EXTRACT(a_json, r'values:\[(.*)]')) numbers
с точно таким же выводом
Я хочу увидеть результат в формате через запятую. Кроме того, я забыл упомянуть в вопросе, что мне нужно проверять уникальные значения при этом.
Ниже простых настроек можно сделать трюк
#standardSQL
WITH `project.dataset.table` AS (
SELECT 111 id, '{key:A,values:[123,2345,2345,456,78,9]}' a_json UNION ALL
SELECT 222, '{key:A,values:[1112, 323, 11, 11]}'
)
SELECT id, a_json,
(SELECT STRING_AGG(DISTINCT number) FROM UNNEST(SPLIT(REGEXP_EXTRACT(a_json, r'values:\[(.*)]'))) number) numbers
FROM `project.dataset.table`
с выводом
Row id a_json numbers
1 111 {key:A,values:[123,2345,2345,456,78,9]} 123,2345,456,78,9
2 222 {key:A,values:[1112, 323, 11, 11]} 1112, 323, 11