カテゴリ:

条件式関数半構造化データ関数と構造化データ関数 (型述語)

IS_NULL_VALUE

VARIANT 引数が JSON null 値の場合、TRUE を返します。

重要

JSON null値は、SQL NULL 値とは異なります。

この関数は、 SQL NULL 値ではなく、 JSON null値に対してのみ TRUE を返します。 以下の例の出力 の1行目と3行目に違いが示されています。

JSON 値の欠落は SQL NULL の値に変換され、 IS_NULL_VALUE は NULL を返します。 以下の例の出力 の4番目の列はこれを示しています。

この関数は IS [ NOT ] NULL 関数とは異なります。

こちらもご参照ください。

IS_<オブジェクト型>

構文

IS_NULL_VALUE( <variant_expr> )
Copy

引数

variant_expr

VARIANT型の値に評価される式です。

戻り値

この関数は BOOLEAN 型または NULL の値を返します。

  • JSON null値に対して TRUE を返します。

  • JSON 値がNULLでない場合に 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

JSON 名前/値のペアを持つ2行を 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"}'));
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行を示しています。

  • 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 を返します。