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

MySQL COALESCE()の説明

    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

    1. MySQLGaleraクラスター間で非同期レプリケーションを設定する方法

    2. MariaDBで特定の文字のASCIIコードを返す2つの方法

    3. SQLServerでフィールド値を文字列に連結します

    4. MySQLベースのシステム(MySQL / MariaDBレプリケーション+ガレラ)用にSELinuxを構成する方法