Presto: извлечение значений из строкового столбца, который похож на карту, но не карту - PullRequest
0 голосов
/ 07 августа 2020

У меня есть таблица:

Name  pets
--------------
Andy  {"cat":2, "dog":1, "bird":4 ,xxx}
John  {"dog":3, "cat":1, "bird":{}, uyx}
Mary  {"dog":2, "duck":{}, "cat":1, zzz}

Столбец pets - это карта, но создатель таблицы - это строка с некоторыми дополнительными символами. Поэтому я не могу использовать cast(json_parse(pets) as map(varchar, varchar)) AS m.

В этом случае, если я хочу узнать значение "cat", как мне это сделать? Спасибо!

1 Ответ

3 голосов
/ 07 августа 2020

Вы можете использовать regexp_extract():

select t.*,
       regexp_extract(pets, '"cats":([^,]*)', 1)
from t;
...