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>

출처: Snowflake SQL Reference - IS_NULL_VALUE

본문

구문

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을 반환해요.

더 알아보기