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