Ниже для BigQuery Standard SQL
К сожалению, JSONPath должен быть строковым литералом или параметром запроса, поэтому см. Обходной путь ниже
#standardSQL
SELECT json_string_expr, list,
(SELECT SPLIT(kv, ':')[SAFE_OFFSET(1)]
FROM UNNEST(SPLIT(REGEXP_REPLACE(json_string_expr, r"[{} ']", ''))) kv
WHERE SPLIT(kv, ':')[SAFE_OFFSET(0)] = list
) value
FROM `project.dataset.table`
Другая, менее подробная версия -
#standardSQL
SELECT json_string_expr, list,
REGEXP_EXTRACT(json_string_expr, CONCAT(r"'", list, "': '(.*?)'")) value
FROM `project.dataset.table`
, если применить обе вышеупомянутые версии к выборочным данным из вашего вопроса - результат
Row json_string_expr list value
1 {'A': '123', 'B': '456'} A 123
2 {'A': '789', 'B': '012'} B 012