카테고리:

조건식 함수 , 반정형 및 정형 데이터 함수 (형식 조건자)

IS_NULL_VALUE

VARIANT 인자가 JSON null 값이면 TRUE를 반환합니다.

중요

JSON null 값은 SQL NULL 값과 다릅니다.

이 함수는 SQL NULL 값이 아닌 JSON null 값에 대해서만 TRUE를 반환합니다. 차이점은 아래 예의 출력 에서 첫 번째 행과 세 번째 행에 나와 있습니다.

누락된 JSON 값은 IS_NULL_VALUE 가 NULL을 반환하는 SQL NULL 값으로 변환됩니다. 아래 예의 출력 에서 4번째 열이 이를 보여줍니다.

이 함수는 IS [ NOT ] NULL 함수와 다릅니다.

참고 항목:

IS_<오브젝트_유형_>

구문

IS_NULL_VALUE( <variant_expr> )
Copy

인자

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);
Copy

PARSE_JSON 함수를 사용하여 문자열 값을 열에 삽입합니다.

INSERT INTO test_is_null_value_function (variant_value)
  (SELECT PARSE_JSON('"string value"'));
Copy

참고

PARSE_JSON 함수는 VARIANT 값을 반환합니다.

열에 JSON null 값을 삽입합니다.

INSERT INTO test_is_null_value_function (variant_value)
  (SELECT PARSE_JSON('null'));
Copy

열에 빈 오브젝트를 삽입합니다.

INSERT INTO test_is_null_value_function (variant_value)
  (SELECT PARSE_JSON('{}'));
Copy

VARIANT 열에 JSON 이름/값 쌍으로 두 행을 삽입합니다.

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"}'));
Copy

NULL을 열에 삽입합니다.

INSERT INTO test_is_null_value_function (variant_value)
  (SELECT PARSE_JSON(NULL));
Copy

테이블을 쿼리합니다.

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;
Copy
+----------------+------------+------------------------------+------------------+------------------+
| 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 값이 6개 행으로 표시됩니다.

  • 각 행의 이름 x 에 대한 JSON 값이 value_of_x 열에 표시됩니다.

  • 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을 반환합니다.