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

Coalesce()がSQLiteでどのように機能するか

    SQLiteでは、coalesce() 関数は、最初のNULL以外の引数のコピーを返します。すべての引数がNULLの場合は、NULLを返します。

    ifnull()に似ています 関数、ただしcoalesce() 3つ以上の引数を受け入れます(ifnull() 2つの引数のみを受け入れます)。

    構文

    構文は次のようになります:

    coalesce(X,Y,...)

    これが意味するのは、2つ以上の引数を提供できるということです。次に、関数はNULLではない最初の関数を返します。

    実例を示します。

    SELECT coalesce(NULL,1);

    結果:

    1

    ここでは、2つの引数とcoalesce()を提供しました NULL以外の最初の値を返しました。この場合は1

    その他の例

    coalesce()の方法を示すためのバリエーションをさらに示します。 それぞれのケースを処理します。

    .mode line
    SELECT
      coalesce(NULL,NULL,1,2,3),
      coalesce(1,NULL,2,3),
      coalesce(NULL,3,2,1),
      coalesce(1,2,3,NULL),
      coalesce(NULL,NULL);

    結果:

    coalesce(NULL,NULL,1,2,3) = 1
         coalesce(1,NULL,2,3) = 1
         coalesce(NULL,3,2,1) = 3
         coalesce(1,2,3,NULL) = 1
          coalesce(NULL,NULL) = 

    ですから、それは非常に簡単です。提供されている引数の数に関係なく、NULLではない最初の引数を返すだけです。

    また、すべての引数がNULLの場合、NULLを返すことに注意してください。

    データベースの例

    coalesce()の使用例を次に示します。 データベースクエリで機能します。

    .mode column
    SELECT 
      CustomerId, 
      coalesce(Fax, 'N/A') AS Fax
    FROM Customer
    LIMIT 5;

    結果:

    CustomerId  Fax          
    ----------  -------------
    1           +55 (12) 3923
    2           N/A          
    3           N/A          
    4           N/A          
    5           +420 2 4172 5

    coalesce()を使用しない場合の外観は次のとおりです。 機能:

    .mode column
    SELECT 
      CustomerId, 
      Fax
    FROM Customer
    LIMIT 5;

    結果:

    CustomerId  Fax               
    ----------  ------------------
    1           +55 (12) 3923-5566
    2                             
    3                             
    4                             
    5           +420 2 4172 5555  

    したがって、coalesce() 関数は、NULLの代わりに意味のある文字列を返すのに役立ちます。

    3つの引数付き

    3番目の引数を追加する例を次に示します。これにより、NULLに到達する前に複数のオプションを実行できます。

    SELECT 
      CustomerId, 
      coalesce(Fax, Email, 'N/A') AS "Fax/Email"
    FROM Customer
    LIMIT 5;

    結果:

    CustomerId  Fax/Email             
    ----------  ----------------------
    1           +55 (12) 3923-5566    
    2           [email protected] 
    3           [email protected]   
    4           [email protected] 
    5           +420 2 4172 5555      

    1. 初心者向けSQLLessThan()演算子

    2. データベースのコピーをダウンロードします

    3. MySQLのルートパスワードをリセットする

    4. テーブルのID列の明示的な値は、列リストが使用され、IDENTITY_INSERTがONSQLServerの場合にのみ指定できます。