本文為您介紹如何使用JSON_TUPLE函數,從JSON字串中取出各路徑字串所表示的值。
使用限制
僅Realtime Compute引擎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 行(空集)。
內容:無。