読者です 読者をやめる 読者になる 読者になる

Webサービスで起業を目指すプログラマーblog

仕事で使ったプログラミング、サーバー周りで役に立つこと、Webサービス開発に必要な技術情報、モバイル情報を書いてます。わかりやすく見やすくをモットーにしています。

SQL関数「COALESCE」でサブクエリを使うにはひと工夫が必要

SQL Oracle

SQL関数「COALESCE」でサブクエリを使うには少しだけ工夫がいるようです。

サンプルコードはOracleを想定しています。

COALESCEとは

値がNULLの場合、代替値を設定するSQL関数です。

COALESCEの通常の使い方

SELECT
    COALESCE(NULL, 0) AS value
FROM
    dual

-- 結果:0

COALESCEでサブクエリを使う

SELECT
    COALESCE(
        SELECT
            NULL
        FROM
            dual
    , 0) AS value
FROM
    dual

-- 結果:ORA-00936: 式がありません

COALESCEでひと工夫してサブクエリを使う

ひと工夫とは、サブクエリに括弧を追加することです。

SELECT
    COALESCE(
        (
            SELECT
                NULL
            FROM
                dual
    ), 0) AS value
FROM
    dual

-- 結果:0

SQLを極めるのに役立つ書籍

SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)

SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)

SQLパズル 第2版 プログラミングが変わる書き方/考え方

SQLパズル 第2版 プログラミングが変わる書き方/考え方