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

OracleのCOALESCE()関数

    Oracle Databaseでは、COALESCE() 関数は、最初のnull以外の式を式リストに返します。

    構文

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

    COALESCE(expr [, expr ]...)

    少なくとも2つの式を渡す必要があります。

    デモンストレーションの例を次に示します。

    SELECT COALESCE(null, 7)
    FROM DUAL;

    結果:

    7

    その他の例を次に示します。

    SET NULL 'null';
    SELECT
        COALESCE(null, null, 1, 2, 3) AS "r1",
        COALESCE(1, null, 2, 3) AS "r2",
        COALESCE(null, 3, 2, 1) AS "r3",
        COALESCE(1, 2, 3, null) AS "r4",
        COALESCE(null, null) AS "r5"
    FROM DUAL;

    結果:

       r1    r2    r3    r4      r5 
    _____ _____ _____ _____ _______ 
        1     1     3     1 null   

    COALESCE()であることがわかります nullを返します すべての引数がnullの場合。

    最初の行についてSET NULL 'null'; 、SQLclセッションがnullを返すように追加しました 結果がnullの場合は常に。

    デフォルトでは、SQLclおよびSQL * Plusは、nullの場合は常に空白を返します。 SQL SELECTの結果として発生します 声明。

    ただし、SET NULLは使用できます 返される別の文字列を指定します。ここでは、文字列nullを指定しました 返却する必要があります。

    データベースの例

    次のクエリを実行するとします。

    SET NULL 'null';
    SELECT 
        LOCATION_ID,
        STATE_PROVINCE
    FROM LOCATIONS
    ORDER BY LOCATION_ID ASC
    FETCH FIRST 6 ROWS ONLY;

    結果:

       LOCATION_ID      STATE_PROVINCE 
    ______________ ___________________ 
              1000 null                
              1100 null                
              1200 Tokyo Prefecture    
              1300 null                
              1400 Texas               
              1500 California          

    いくつかの行がnullであることがわかります STATE_PROVINCE内 列。

    今回もCOALESCE()を使用する以外は、クエリを繰り返します。 STATE_PROVINCEに対して 列:

    SELECT 
        LOCATION_ID,
        COALESCE(STATE_PROVINCE, 'N/A')
    FROM LOCATIONS
    ORDER BY LOCATION_ID ASC
    FETCH FIRST 6 ROWS ONLY;

    結果:

       LOCATION_ID    COALESCE(STATE_PROVINCE,'N/A') 
    ______________ _________________________________ 
              1000 N/A                               
              1100 N/A                               
              1200 Tokyo Prefecture                  
              1300 N/A                               
              1400 Texas                             
              1500 California                        

    そこで、COALESCE()を使用しました N/Aを返す null値が発生したときはいつでも。

    COALESCE() vs CASE

    次のとおりです:

    COALESCE(expr1, expr2)

    これと同等です:

    CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END

    無効な引数カウント

    引数を渡さずに関数を呼び出すと、エラーが発生します:

    SELECT COALESCE()
    FROM DUAL;

    結果:

    SQL Error: ORA-00938: not enough arguments for function
    00938. 00000 -  "not enough arguments for function"

    1. Windows7でのMySQL5のインストールと操作

    2. SETSTATISTICSIOからの誤解を招くデータに注意してください

    3. SQLSTATE [42000]:構文エラーまたはアクセス違反:1064 SQL構文にエラーがあります— PHP — PDO

    4. SQL Serverで複合主キーを作成する方法(T-SQLの例)