如何使用TERADATA SQL引擎从JSON响应中提取多个值并转结构化表格
Teradata JSON字段提取解决方案
适用场景
针对你给出的JSON结构:
{"barrings": [{"0": True,"1": false,"5": True,"barring": "BARALL"}]}
需要输出固定id、barring为0/1/5键名、status为对应布尔值的结构化结果,可参考以下两种实现方案:
方案1:Teradata 16.20+ 版本(推荐)
使用JSON_TABLE配合UNPIVOT实现,性能更优:
SELECT 1546075 AS id, jt.barring, jt.status FROM -- 替换为你实际的数据源表名 your_source_table t, JSON_TABLE( -- 替换为你存储JSON数据的字段名,若存储为字符串格式先套JSONParse() t.json_content, '$.barrings[0]' COLUMNS ( status_0 BOOLEAN PATH '$."0"', status_1 BOOLEAN PATH '$."1"', status_5 BOOLEAN PATH '$."5"' ) ) AS parsed_json, UNPIVOT ( status FOR barring IN ( status_0 AS '0', status_1 AS '1', status_5 AS '5' ) ) AS jt;
方案2:低版本Teradata兼容方案
如果版本不支持JSON_TABLE,用JSONExtract配合UNION ALL实现:
SELECT 1546075 AS id, '0' AS barring, JSONExtract(json_content, 'barrings[0]."0"') AS status FROM your_source_table UNION ALL SELECT 1546075 AS id, '1' AS barring, JSONExtract(json_content, 'barrings[0]."1"') AS status FROM your_source_table UNION ALL SELECT 1546075 AS id, '5' AS barring, JSONExtract(json_content, 'barrings[0]."5"') AS status FROM your_source_table;
输出结果示例
| id | barring | status |
|---|---|---|
| 1546075 | 0 | True |
| 1546075 | 1 | False |
| 1546075 | 5 | True |
内容的提问来源于stack exchange,提问作者10k
相关产品推荐
相关产品推荐

