SQLite nullif()
functionは、必要に応じて特定の値をNULLとして扱うことができる便利な関数です。
ifnull()
と混同しないでください 逆の関数–NULL値を別のものとして扱うことができます。
nullif()
関数は2つの引数を受け入れ、引数が異なる場合は最初の引数を返し、引数が同じ場合はNULLを返します。
構文
構文は次のようになります:
nullif(X,Y)
この関数は、引数を左から右に検索して、照合関数を定義する引数を探し、その照合関数をすべての文字列比較に使用します。どちらの引数も照合関数を定義していない場合は、BINARYが使用されます。
例
これがデモンストレーションの基本的な例です。
SELECT
nullif(123,0),
nullif(0,0),
nullif(123,123);
結果:
nullif(123,0) nullif(0,0) nullif(123,123) ------------- ----------- --------------- 123
最初の列では2つの値が異なるため、最初の値が返されます。
2番目の列では、両方の値が同じであるため、NULLが返されます。
3番目の列についても同じことが言えます。両方の値が同じであるため、NULLが返されます。
実用的な例
これは、nullif()
のより実用的な使用法を示すデータベースの例です。 機能。
次の製品という表を見てください :
ProductId ProductName Price ---------- ------------- ---------- 1 Widget Holder 139.5 2 Widget Stick 89.75 3 Foo Cap 11.99 4 Free Widget 0.0 5 Free Foobar 0.0 6 Free Beer
2つの製品の価格がゼロであることがわかります。別の製品の価格はNULLです。
ここで、正の価格の製品がいくつあるかを調べたいと想像してください。つまり、価格がゼロ(またはNULL)の商品は含めたくありません。
これを行うには、nullif()
を使用できます count()
と組み合わせて 機能。
SELECT count(nullif(Price, 0.00))
FROM Products;
結果:
3
期待どおりに3が得られます。これは、価格で正の値を持つ行の数とまったく同じです。 桁。
これは、count()
が機能するために機能します 関数はNULL以外の値のみをカウントします。ゼロの金額をNULLに変換することで、計算でこれらの値を無視することができます。
ここでもnullif()
はありません 機能。
SELECT count(Price)
FROM Products;
結果:
5
したがって、この場合、ゼロの金額が含まれ、5が得られます。実際にはNULL値があるため、行6は無視されます。