MariaDBでは、 COALESCE()
演算子は、リスト内の最初のNULL以外の値を返します。NULL以外の値がない場合は、NULLを返します。
構文
構文は次のようになります:
COALESCE(value,...)
例
簡単な例を次に示します。
SELECT COALESCE(null, 'Red', 'Black');
結果:
Red
この場合、 Red
NULL以外の最初の値であるため、 COALESCE()
その値を返しました。
黒コード> NULLでもありませんでしたが、
Red
の後に来ました そのため、返送されませんでした。
データベースの例
次のクエリを実行するとします。
SELECT
PetName,
DOB AS "Date of Birth"
FROM Pets;
そして、次の結果が得られます:
+---------+---------------+ | PetName | Date of Birth | +---------+---------------+ | Fluffy | 2020-11-20 | | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | | Bark | NULL | | Meow | NULL | +---------+---------------+
最後の2行のDOB列にNULL値があることがわかります。
NULL
を置き換えたい場合 別の値を使用すると、クエリを次のように変更できます。
SELECT
PetName,
COALESCE(DOB, 'None Supplied') AS "Date of Birth"
FROM Pets;
結果:
+---------+---------------+ | PetName | Date of Birth | +---------+---------------+ | Fluffy | 2020-11-20 | | Fetch | 2019-08-16 | | Scratch | 2018-10-01 | | Wag | 2020-03-15 | | Tweet | 2020-11-28 | | Fluffy | 2020-09-17 | | Bark | None Supplied | | Meow | None Supplied | +---------+---------------+
表現
COALESCE()
最初はNULL
と評価されない最初の式の現在の値を返します 。したがって、次のような式を渡すと、次のようになります。
SELECT COALESCE( null, 5 * 2 );
これを取得します:
10
すべての値がNULLの場合
すべての値がNULL
の場合 、 COALESCE()
NULL
を返します :
SELECT COALESCE( null, null );
結果:
NULL
COALESCE()
vs IFNULL()
2つの値で使用する場合、 COALESCE()
IFNULL
と同じように機能します :
SET @a = null, @b = 52;
SELECT
COALESCE(@a, @b),
IFNULL(@a, @b);
結果:
+------------------+----------------+ | COALESCE(@a, @b) | IFNULL(@a, @b) | +------------------+----------------+ | 52 | 52 | +------------------+----------------+
無効な引数カウント
COALESCE()
の使用 引数がないとエラーが発生します:
SELECT COALESCE();
結果:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1