- 类别:
:doc:`/sql-reference/functions-semistructured`(解析)
TRY_PARSE_JSON¶
PARSE_JSON 的特殊版本,如果在解析过程中发生错误,它会返回 NULL 值。
语法¶
TRY_PARSE_JSON( <expr> [ , '<parameter>' ] )
实参¶
必填:
expr
字符串类型的表达式(例如 VARCHAR),该类型可保存有效的 JSON 信息。
可选:
'parameter'
字符串常量,指定用于搜索匹配项的参数。支持的值:
参数
描述
d
允许 JSON 对象中的重复键。如果 JSON 对象包含重复键,则返回的对象具有该键的单个实例,其中包含为该键指定的最后一个值。
s
不允许 JSON 对象(严格)中的重复键。此值为默认值。
返回¶
返回值为 VARIANT 类型,包含 JSON 文档。
如果输入是 NULL 或者在解析过程中出现错误,则该函数返回 NULL。
此函数不返回 结构化类型。
使用说明¶
有关使用说明,请参阅 PARSE_JSON。
示例¶
此示例显示了通过调用 TRY_PARSE_JSON 来解析包含可解析为 JSON 的值的字符串,从而在 VARIANT 列中存储不同类型的数据:
创建并填写表。
CREATE OR REPLACE TEMPORARY TABLE vartab (ID INTEGER, v VARCHAR);
INSERT INTO vartab (id, v) VALUES
(1, '[-1, 12, 289, 2188, FALSE,]'),
(2, '{ "x" : "abc", "y" : FALSE, "z": 10} '),
(3, '{ "bad" : "json", "missing" : TRUE, "close_brace": 10 ');
使用 TRY_PARSE_JSON 查询数据。请注意,第三行的值为 NULL。如果查询使用了 PARSE_JSON 而不是 TRY_PARSE_JSON,则查询将失败。
SELECT ID, TRY_PARSE_JSON(v)
FROM vartab
ORDER BY ID;
+----+-------------------+
| ID | TRY_PARSE_JSON(V) |
|----+-------------------|
| 1 | [ |
| | -1, |
| | 12, |
| | 289, |
| | 2188, |
| | false, |
| | undefined |
| | ] |
| 2 | { |
| | "x": "abc", |
| | "y": false, |
| | "z": 10 |
| | } |
| 3 | NULL |
+----+-------------------+
有关更多示例,请参阅 PARSE_JSON。