我正在尝试将 MyTable 中的以下 JSON Blob 展平,即 varchar:
我的桌子
A | B | JSONBlob |
---|---|---|
x | 1 | {“a”:“12345”,“b”:“城市”,“c”:“州”,“d”:{“e”:“567”,“f”:“llc”}} |
y | 2 | {"a": "6789", "b": "国家", "c": "县", "d": {"e":"999", "f":"col"} } |
到目前为止我已经尝试过但没有返回任何结果:
select
f. value as a
, f1.value:f as f
from MyTable
, lateral flatten(input => PARSE_JSON(MyTable.JSONBlob)) f
, lateral flatten(input => f.value:d) f1
我想查询得到以下格式的结果:
a | f |
---|---|
12345 | LLC |
6789 | col |
如果所有数据看起来都像示例,则不需要展平。
f
中的值仅嵌套在 d
中,即上面的示例。
这个 SQL 会给你你正在寻找的结果
select jb:a::text a, jb:d:f::text f
from (select PARSE_JSON(JSONBlob) jb
from myTable)
使用以下内容进行测试,结果如下
with myTable(A,B,JSONBlob) as (
select * from (values
('x',1,'{"a": "12345", "b": "city", "c": "state", "d": {"e":"567", "f":"llc"} }'),
('y',2,'{"a": "6789", "b": "country", "c": "county", "d": {"e":"999", "f":"col"} }'))
)
select jb:a::text a, jb:d:f::text f
from (select PARSE_JSON(JSONBlob) jb
from myTable)