カテゴリ:

半構造化データ関数と構造化データ関数 (解析)

TRY_PARSE_JSON

解析中にエラーが発生した場合に NULL 値を返す PARSE_JSON の特別なバージョンです。

構文

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

引数

必須:

expr

有効な JSON 情報を保持する文字列型の式(例: VARCHAR)。

オプション:

'parameter'

検索に使用するパラメーターを指定する文字列定数。サポートされている値:

パラメーター

説明

d

JSON オブジェクトでキーの重複を許可します。JSON オブジェクトに重複キーが含まれる場合、返されるオブジェクトには、そのキーに指定された最後の値を持つ、そのキーのインスタンスが1つ含まれます。

s

JSON オブジェクトでキーの重複を許可しません(厳密)。この値がデフォルトです。

戻り値

JSON ドキュメントを含む型 VARIANT の値を返します。

入力が 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 を使用して、データをクエリします。3行目の値は NULLになります。このクエリが TRY_PARSE_JSON ではなく 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 をご参照ください。