NULLIF 関数 - Amazon Redshift

NULLIF 関数

構文

NULLIF 式は 2 つの引数を比較し、引数が等しい場合に Null を返します。引数が等しくない場合、最初の引数が返されます。この式は NVL または COALESCE 式の逆です。

NULLIF ( expression1, expression2 )

引数

expression1, expression2

比較対象の列または式。戻り値の型は、最初の式の型と同じです。NULLIF の結果のデフォルトの列名は、最初の式の列名です。

次の例では、引数が等しくないため、クエリは first 文字列を返します。

SELECT NULLIF('first', 'second'); case ------- first

次の例では、文字列リテラル引数が等しいため、クエリは NULL を返します。

SELECT NULLIF('first', 'first'); case ------- NULL

次の例では、整数の引数が等しくないため、クエリは 1 を返します。

SELECT NULLIF(1, 2); case ------- 1

次の例では、整数の引数が等しいため、クエリは NULL を返します。

SELECT NULLIF(1, 1); case ------- NULL

次の例に示すクエリは、LISTID 値と SALESID 値が一致する場合に Null を返します。

select nullif(listid,salesid), salesid from sales where salesid<10 order by 1, 2 desc; listid | salesid --------+--------- 4 | 2 5 | 4 5 | 3 6 | 5 10 | 9 10 | 8 10 | 7 10 | 6 | 1 (9 rows)

NULLIF を使用し、空の文字列が常に Null として返されるようにします。以下の例では、NULLIF 式は Null 値または少なくとも 1 文字を含む文字列のどちらかを返します。

insert into category values(0,'','Special','Special'); select nullif(catgroup,'') from category where catdesc='Special'; catgroup ---------- null (1 row)

NULLIF は末尾の空白を無視します。文字列が空ではないが空鶴が含まれる場合も、NULLIF は Null を返します。

create table nulliftest(c1 char(2), c2 char(2)); insert into nulliftest values ('a','a '); insert into nulliftest values ('b','b'); select nullif(c1,c2) from nulliftest; c1 ------ null null (2 rows)