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

SQLite Ifnull()のしくみ

    SQLite ifnull() 関数を使用すると、NULL値を別の値に置き換えることができます。

    2つの引数を取り、最初のNULL以外の引数のコピーを返します。両方の引数がNULLの場合はNULLを返します。

    ifnull() 関数はcoalesce()と同等です 2つの引数があります。

    簡単な例

    コンセプトを示す簡単な例を次に示します。

    SELECT 
      ifnull(123, 0),
      ifnull(NULL, 0);

    結果:

    ifnull(123, 0)  ifnull(NULL, 0)
    --------------  ---------------
    123             0              

    2番目の列はNULLであったため、 0 代わりに返されました。

    データベースの例

    この例では、ifnull()を使用しています データベースクエリで。これは、ifnull() NULL値を含む可能性のあるデータをクエリするときに役立ちます。

    次の表を例として取り上げます。

    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                

    ほとんどの製品には価格が設定されていますが、無料のビールの価格 NULLです。

    これを選択した値に変更できます。

    SELECT 
      ProductName,
      ifnull(Price, 0.0)
    FROM Products;

    結果:

    ProductName    ifnull(Price, 0.0)
    -------------  ------------------
    Widget Holder  139.5             
    Widget Stick   89.75             
    Foo Cap        11.99             
    Free Widget    0.0               
    Free Foobar    0.0               
    Free Beer      0.0               

    現在、他の無料製品と同じ価格になっています。

    置換値は必ずしも数値である必要はありません。文字列に置き換えることもできます。

    SELECT 
      ProductName,
      ifnull(Price, 'FREE!')
    FROM Products;

    結果:

    ProductName    ifnull(Price, 'FREE!')
    -------------  ----------------------
    Widget Holder  139.5                 
    Widget Stick   89.75                 
    Foo Cap        11.99                 
    Free Widget    0.0                   
    Free Foobar    0.0                   
    Free Beer      FREE!                 

    両方の引数がNULLの場合

    両方の引数がNULLの場合、NULLが返されます。

    SELECT ifnull(NULL, NULL);

    結果:

    ifnull(NULL, NULL)
    ------------------
                      

    1. 複数の列のチェック制約

    2. Laraveleloquentのsql_mode=only_full_group_byとの互換性を解決するにはどうすればよいですか?

    3. COALESCE関数を使用して値をコンマで区切る

    4. ODP.NET接続プーリング:接続が使用されたかどうかを確認する方法