に最終更新
PARSE_TO_VARIANT
説明
PARSE_TO_VARIANT は、単一の完全な JSON 値を解析して VARIANT に変換します。JSON オブジェクト、配列、文字列、数値、真偽値、および JSON リテラルの null を受け付けます。この関数は Doris 4.1.4 以降で使用できます。
構文
PARSE_TO_VARIANT(<json_value>)
パラメータ
| パラメータ | 説明 |
|---|---|
<json_value> | 単一の完全な JSON 値を含む CHAR、VARCHAR、STRING 式、または JSON/JSONB 式です。JSON/JSONB 入力は JSON テキストに変換してから VARIANT として解析されます。 |
戻り値
VARIANT 値を返します。
- SQL
NULLを入力すると SQLNULLを返します。 - JSON リテラルの
nullを入力すると VARIANT/JSON のnullを返します。これは SQLNULLとは異なります。 - 無効な JSON、現在の検証設定で拒否されるオブジェクトキーの重複、サポートされないネストの深さ、その他の検証エラーは、クエリの失敗を引き起こします。
例
JSON テキストを解析する:
SELECT CAST(
PARSE_TO_VARIANT('{"id": 42, "tags": ["doris", "sql"]}')
AS STRING
) AS value;
+----------------------------------------+
| value |
+----------------------------------------+
| {"id":42,"tags":["doris","sql"]} |
+----------------------------------------+
JSON/JSONB 式を解析する:
SELECT CAST(
PARSE_TO_VARIANT(CAST('{"id": 42}' AS JSON))
AS STRING
) AS value;
+-----------+
| value |
+-----------+
| {"id":42} |
+-----------+
値を取り出して具体的な SQL 型に CAST する:
SELECT CAST(
PARSE_TO_VARIANT('{"user": {"id": 42}}')['user']['id']
AS BIGINT
) AS user_id;
+---------+
| user_id |
+---------+
| 42 |
+---------+
SQL NULL は SQL NULL のままになる:
SELECT PARSE_TO_VARIANT(NULL) IS NULL AS is_sql_null;
+-------------+
| is_sql_null |
+-------------+
| 1 |
+-------------+
無効な JSON はエラーになる:
SELECT PARSE_TO_VARIANT('{"id":');
ERROR: Parse json document failed
使用上の注意
- TRY_PARSE_TO_VARIANT を使用すると、無効な入力を SQL
NULLに変換できます。 PARSE_TO_VARIANTは JSON を明示的に解析します。一方、CAST(string AS VARIANT)は入力を VARIANT 文字列として保持し、JSON としては解析しません。VARIANT の CAST ルール を参照してください。