IS_NULL_VALUE
IS_NULL_VALUE (JSON null 여부)
VARIANT 인자가 JSON null 값이면 TRUE를 반환해요.
중요: JSON null 값은 SQL NULL 값과 구별돼요.
이 함수는 SQL NULL 값이 아니라 JSON null 값에 대해서만 TRUE를 반환해요. 그 차이는 아래 예시의 출력에서 첫 번째와 세 번째 행에 나와 있어요.
누락된 JSON 값은 SQL NULL 값으로 변환되며, 이에 대해 IS_NULL_VALUE는 NULL을 반환해요. 아래 예시 출력의 4번째 열이 이것을 보여줘요.
이 함수는 IS [ NOT ] NULL 함수와 다르단 점에 유의해요.
참조: IS_<object_type>
본문
구문
IS_NULL_VALUE( <variant_expr> )
인자
variant_expr
VARIANT 타입의 값으로 평가되는 표현식이에요.
반환 값
이 함수는 BOOLEAN 또는 NULL 타입의 값을 반환해요:
- JSON null 값에 대해 TRUE를 반환해요.
- null이 아닌 JSON 값에 대해 FALSE를 반환해요.
- SQL NULL 값에 대해 NULL을 반환해요.
예시
이 예시는 IS_NULL_VALUE 함수를 사용해요. 먼저 VARIANT 열이 있는 테이블을 만들어요:
CREATE OR REPLACE TABLE test_is_null_value_function (
variant_value VARIANT
);
PARSE_JSON 함수를 사용해 문자열 값을 열에 삽입해요:
INSERT INTO test_is_null_value_function (variant_value)
(SELECT PARSE_JSON('"string value"'));
참고: PARSE_JSON 함수는 VARIANT 값을 반환해요.
JSON null 값을 열에 삽입해요:
INSERT INTO test_is_null_value_function (variant_value)
(SELECT PARSE_JSON('null'));
빈 객체를 열에 삽입해요:
INSERT INTO test_is_null_value_function (variant_value)
(SELECT PARSE_JSON('{}'));
JSON name/value 쌍이 있는 두 행을 VARIANT 열에 삽입해요:
INSERT INTO test_is_null_value_function (variant_value)
(SELECT PARSE_JSON('{"x": null}'));
INSERT INTO test_is_null_value_function (variant_value)
(SELECT PARSE_JSON('{"x": "foo"}'));
NULL을 열에 삽입해요:
INSERT INTO test_is_null_value_function (variant_value)
(SELECT PARSE_JSON(NULL));
테이블 조회:
SELECT variant_value,
variant_value:x value_of_x,
IS_NULL_VALUE(variant_value) is_variant_value_a_json_null,
IS_NULL_VALUE(variant_value:x) is_x_a_json_null,
IS_NULL_VALUE(variant_value:y) is_y_a_json_null
FROM test_is_null_value_function;
+----------------+------------+------------------------------+------------------+------------------+
| VARIANT_VALUE | VALUE_OF_X | IS_VARIANT_VALUE_A_JSON_NULL | IS_X_A_JSON_NULL | IS_Y_A_JSON_NULL |
|----------------+------------+------------------------------+------------------+------------------|
| "string value" | NULL | False | NULL | NULL |
| null | NULL | True | NULL | NULL |
| {} | NULL | False | NULL | NULL |
| { | null | False | True | NULL |
| "x": null | | | | |
| } | | | | |
| { | "foo" | False | False | NULL |
| "x": "foo" | | | | |
| } | | | | |
| NULL | NULL | NULL | NULL | NULL |
+----------------+------------+------------------------------+------------------+------------------+
쿼리 결과에서:
- variant_value 열은 삽입된 VARIANT 값 여섯 행을 보여줘요.
- value_of_x 열은 각 행의 이름 x에 대한 JSON 값을 보여줘요.
- is_variant_value_a_json_null 열은 각 행의 VARIANT 값에 대한 IS_NULL_VALUE 함수 결과를 반환해요.
- is_x_a_json_null 열은 각 행의 이름 x에 대한 IS_NULL_VALUE 함수 결과를 반환해요. x 이름이 없는 행은 NULL을 반환해요.
- is_y_a_json_null 열은 각 행의 이름 y에 대한 IS_NULL_VALUE 함수 결과를 반환해요. 어떤 행에도 일치하는 y 이름이 없으므로 모든 행이 NULL을 반환해요.
더 알아보기
- Conditional expression functions — 조건식 함수 모음
- IS_NULL — SQL NULL 여부
- PARSE_JSON — JSON 파싱