sql >> データベース >  >> RDS >> SQLite

SQLite Nullif()のしくみ

    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は無視されます。


    1. SQL Server 2008のDateTimeOffsetをDateTimeに変換するにはどうすればよいですか?

    2. ユーザー定義タイプに関する情報を取得するにはどうすればよいですか?

    3. 複合主キーを持つテーブルのレコードの順序は何ですか

    4. C++プログラムをMariaDBに接続する方法