本文为您介绍如何使用JSON_TUPLE函数,从JSON字符串中取出各路径字符串所表示的值。
使用限制
仅实时计算引擎VVR 3.0.0及以上版本支持JSON_TUPLE函数。
语法
JSON_TUPLE(str, path1, path2 ..., pathN) 入参
参数 | 数据类型 | 说明 |
str | VARCHAR | JSON字符串。 |
path1~pathN | VARCHAR | 表示路径的字符串,前面不需要 |
示例
测试数据
表 1. T1
d(VARCHAR)
s(VARCHAR)
{"qwe":"asd","qwe2":"asd2","qwe3":"asd3"}
qwe3
{"qwe":"asd4","qwe2":"asd5","qwe3":"asd3"}
qwe2
测试语句
SELECT d, v FROM T1, lateral table(JSON_TUPLE(d, 'qwe', s)) AS T(v);测试结果
d(VARCHAR)
v(VARCHAR)
{"qwe":"asd","qwe2":"asd2","qwe3":"asd3"}
asd
{"qwe":"asd","qwe2":"asd2","qwe3":"asd3"}
asd3
{"qwe":"asd4","qwe2":"asd5","qwe3":"asd3"}
asd4
{"qwe":"asd4","qwe2":"asd5","qwe3":"asd3"}
asd5
NULL 值处理行为变化说明
行为比对说明
假设在查询中调用函数:json_tuple(CAST(NULL AS STRING), 'a', 'b'),其中输入参数(str)为NULL。
SELECT * FROM (VALUES (1), (2)) AS v(x)
, LATERAL TABLE(
json_tuple(CAST(NULL AS STRING), 'a', 'b')
) AS T;
-- 每个value返回两行null,一共 4 行 (1,null),(1,null),(2,null),(2,null)VVR 11.0之前(旧行为)
返回结果:4 行。
内容:每行包含一个
NULL列。
VVR 11.0 及之后(新行为):
返回结果:0 行(空集)。
内容:无。