类别:

:doc:`/sql-reference/functions-semistructured`(解析)

TRY_PARSE_JSON

PARSE_JSON 的特殊版本,如果在解析过程中发生错误,它会返回 NULL 值。

语法

TRY_PARSE_JSON( <expr> [ , '<parameter>' ] )
Copy

实参

必填:

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 ');
Copy

使用 TRY_PARSE_JSON 查询数据。请注意,第三行的值为 NULL。如果查询使用了 PARSE_JSON 而不是 TRY_PARSE_JSON,则查询将失败。

SELECT ID, TRY_PARSE_JSON(v)
  FROM vartab
  ORDER BY ID;
Copy
+----+-------------------+
| ID | TRY_PARSE_JSON(V) |
|----+-------------------|
|  1 | [                 |
|    |   -1,             |
|    |   12,             |
|    |   289,            |
|    |   2188,           |
|    |   false,          |
|    |   undefined       |
|    | ]                 |
|  2 | {                 |
|    |   "x": "abc",     |
|    |   "y": false,     |
|    |   "z": 10         |
|    | }                 |
|  3 | NULL              |
+----+-------------------+

有关更多示例,请参阅 PARSE_JSON

语言: 中文