JSON 和 Teradata
JSON and Teradata
我有以下 JSON:
'{"0": false,"1": false,"barring": "BAR_ROAMING"}'
teradata 中有一个专用于 Json 的属性,可用于提取限制值 F_JSON.barring
--> BAR_ROAMING
但是另外两个是动态密钥,我该如何提取它们?
您可以使用 JSONExtractValue 函数:
select JsonCol.JSONExtractValue('$.[0]') as FirstOne
, JsonCol.JSONExtractValue('$.[1]') as SecondOne
from (
select new json('{"0": false,"1": false,"barring": "BAR_ROAMING"}')
) MyJsonData(JsonCol)
https://docs.teradata.com/r/HN9cf0JB0JlWCXaQm6KDvw/aaGwlJOTKsXk4IaU7vsE6g
我最终使用了
CREATE TABLE KEY_JSON AS (
SELECT DISTINCT(JSONKeys) J_KEY FROM Json_Keys
(
ON (SELECT JSON FROM JSON_TABLE) USING QUOTES('N'))
AS json_data) WITH DATA;
并在我的 2 个表之间执行 JOIN
(JSON_TABLE and KEY_JSON) ON JSON LIKE '%||J_KEY||%'
并使用 JSONEXTRACT(JSON.'$."||J_KEY)
提取值
我有以下 JSON:
'{"0": false,"1": false,"barring": "BAR_ROAMING"}'
teradata 中有一个专用于 Json 的属性,可用于提取限制值 F_JSON.barring
--> BAR_ROAMING
但是另外两个是动态密钥,我该如何提取它们?
您可以使用 JSONExtractValue 函数:
select JsonCol.JSONExtractValue('$.[0]') as FirstOne
, JsonCol.JSONExtractValue('$.[1]') as SecondOne
from (
select new json('{"0": false,"1": false,"barring": "BAR_ROAMING"}')
) MyJsonData(JsonCol)
https://docs.teradata.com/r/HN9cf0JB0JlWCXaQm6KDvw/aaGwlJOTKsXk4IaU7vsE6g
我最终使用了
CREATE TABLE KEY_JSON AS (
SELECT DISTINCT(JSONKeys) J_KEY FROM Json_Keys
(
ON (SELECT JSON FROM JSON_TABLE) USING QUOTES('N'))
AS json_data) WITH DATA;
并在我的 2 个表之间执行 JOIN
(JSON_TABLE and KEY_JSON) ON JSON LIKE '%||J_KEY||%'
并使用 JSONEXTRACT(JSON.'$."||J_KEY)