首页 > 解决方案 > Presto:从字符串列中提取值,类似于map,但不是map

问题描述

我有一张桌子:

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",我该怎么做?谢谢!

标签: sqlpresto

解决方案


您可以使用regexp_extract()

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

推荐阅读