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"