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)

提取值