MySQLでは、COALESCE()
演算子は、リスト内の最初のNULL以外の値を返します。NULL以外の値がない場合は、NULLを返します。
構文
構文は次のようになります:
COALESCE(value,...)
例
簡単な例を次に示します。
SELECT COALESCE(null, 'Fish', 'Rabbit');
結果:
Fish
この場合、Fish
は最初の非NULL値であったため、COALESCE()
その値を返しました。
Rabbit
NULL以外の値でもありましたが、Fish
の後にありました そのため、返送されませんでした。
すべての値がNULLの場合
すべての値がNULL
の場合 、COALESCE()
NULL
を返します :
SELECT COALESCE( null, null );
結果:
NULL
表現
COALESCE()
最初はNULL
と評価されない最初の式の現在の値を返します 。したがって、次のような式を渡すと、次のようになります。
SELECT COALESCE( null, 2 * 10 );
これを取得します:
20
データベースの例
次のクエリを実行するとします。
SELECT
PetName,
PetType
FROM Pets;
そして、次の結果が得られます:
PetName PetType ------- ------- Meow Cat Woof Dog Tweet Bird Awk NULL Moo Cow Omph NULL
DOB列に2つの行の値がNULLであることがわかります。
NULL
を置き換えたい場合 別の値を使用すると、クエリを次のように変更できます。
SELECT
PetName,
COALESCE(PetType, 'Unknown') AS "PetType"
FROM Pets;
結果:
PetName PetType ------- ------- Meow Cat Woof Dog Tweet Bird Awk Unknown Moo Cow Omph Unknown
この場合、すべてのNULL値を文字列Unknown
に置き換えました。 。
ただし、文字列である必要はありません。 NULL値を整数に置き換える別の例を次に示します。
SELECT
EmployeeName,
Salary,
COALESCE(Salary, 0) AS "Salary (adjusted)"
FROM Employees;
結果:
EmployeeName Salary Salary (adjusted) -------------- ------ ----------------- Homer Einstein NULL 0 Bart Hawking 100000 100000
無効な引数カウント
COALESCE()
の使用 引数がないとエラーが発生します:
SELECT COALESCE();
結果:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1