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

MariaDBでのCOALESCE()のしくみ

    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

    1. Oracleで日付が属する四半期を確認する

    2. 私の11gオプティマイザー統計ジョブが終了しました–修正済み

    3. 5MicrosoftAccessのヒントとコツ

    4. ActiveRecordrawSQLから型指定された結果を取得する