최종 수정: 에
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/JSONnull을 반환하며, 이는 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 규칙을 참조하세요.