sql - 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"
,我该怎么做?谢谢!
解决方案
您可以使用regexp_extract()
:
select t.*,
regexp_extract(pets, '"cats":([^,]*)', 1)
from t;
推荐阅读
- excel - 具有相同结果的第二、第三最佳值(VLOOKUP、MATCH...)
- javascript - 使用 CodeMirror 简单模式“覆盖”多个标记/规则/样式的方法?
- javascript - 使用 react-select V2 进行正确的组件样式组合
- 3d - 检测 3D 网格上的水平和垂直表面
- spring-boot - 无法将“服务器”下的属性绑定到 org.springframework.boot.autoconfigure.web.ServerProperties:
- javascript - 在 Node.js ES6 中使用 eval 创建变量失败
- swift4.1 - 如何以编程方式浏览按钮
- docker - 如何从包含多个 docker 图像的 tar 球中加载单个 docker 图像
- python - 在类中使用装饰器并调用对象
- python - 如何从熊猫中的csv文件中计数和百分比