■ はじめに
小ネタ。 Snowflake の NULL の扱いについて、メモっておく
目次
【1】IFNULL 【2】NULLIF 【3】NULLIFZERO 【4】EQUAL_NULL 【5】IS_NULL_VALUE 【6】COALESCE
【1】IFNULL
-- expr1 が NULL の場合は、 expr2 を返す -- それ以外の場合は expr1 を返す IFNULL( <expr1> , <expr2> )
https://docs.snowflake.com/ja/sql-reference/functions/ifnull
【2】NULLIF
-- expr1 が expr2 と等しい場合は NULL を返し、 -- それ以外の場合は expr1 を返す NULLIF( <expr1> , <expr2> )
Snowflake
https://docs.snowflake.com/ja/sql-reference/functions/nullif
1)サンプル
SELECT NULLIF(id, 'N/A'), -- id が N/A だったらNULL,それ以外は id NULLIF(name, 'N/A') FROM demo_table ;
【3】NULLIFZERO
-- 引数が 0 と評価された場合は NULL を返す -- それ以外の場合は、引数を返す NULLIFZERO( <expr> )
https://docs.snowflake.com/ja/sql-reference/functions/nullifzero
【4】EQUAL_NULL
-- 2つの式が等しいかどうかを比較 -- NULLs を等値比較の既知の値として扱う EQUAL_NULL( <expr1> , <expr2> )
https://docs.snowflake.com/ja/sql-reference/functions/equal_null
戻り値 TRUE
EQUAL_NULL( <null> , <null> )
戻り値 FALSE
EQUAL_NULL( <null> , <非null> ) EQUAL_NULL( <非null> , <null> )
【5】IS_NULL_VALUE
-- VARIANT 引数が JSON null値の場合、trueを返す
IS_NULL_VALUE( <variant_expr> )
https://docs.snowflake.com/ja/sql-reference/functions/is_null_value
【6】COALESCE
* 与えられた引数から NULLでない最初の引数を返却する cf. COALESCE (コーレス) = 結合する、合体する、融合する
https://docs.snowflake.com/ja/sql-reference/functions/coalesce
構文
COALESCE( <expr1> , <expr2> [ , ... , <exprN> ] ) -- 最初の null でないデータを返す -- => 値1がNULLだったら値2、値1がNULLでなかったらそのまま値1を返す COALESCE(値1, 値2)
サンプル
CREATE OR REPLACE SEQUENCE demo_seq START = 1 INCREMENT = 1; INSERT INTO demo_table (id, name) -- ★idがあれば、なければ、シーケンスでID発行する SELECT COALESCE(id, demo_seq.nextval) AS id, name FROM user;
関連記事
Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world ~
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ 関係演算 / 集合論 ~
https://dk521123.hatenablog.com/entry/2024/09/12/003814