dポイントプレゼントキャンペーン実施中!

PLSQLのCASE文でNULLを評価する際の動作について

PLSQLのCASE文でNULLを評価する時、下記の例1ではNULLを判定できず、
例2を使えばNULLを判定できました。

問題は解決したのですが理屈がわかりません。
ご存知の方、教えてください。

--例1
DECLARE
MOJI VARCHAR2(1);
BEGIN
CASE MOJI
WHEN NULL THEN
DBMS_OUTPUT.PUT_LINE('NULL DESU');
ELSE
DBMS_OUTPUT.PUT_LINE('NULL DEHA NAI');
END CASE;
END;

--例2

DECLARE
MOJI VARCHAR2(1);
BEGIN
CASE NVL(MOJI,' ')
WHEN ' ' THEN
DBMS_OUTPUT.PUT_LINE('NULL DESU');
ELSE
DBMS_OUTPUT.PUT_LINE('NULL DEHA NAI');
END CASE;
END;

A 回答 (1件)

CASE MOJI


WHEN NULL THEN

という書き方は

CASE
WHEN MOJI = NULL THEN

と同じだからです。NULLを判定する場合は、

CASE
WHEN MOJI IS NULL THEN
...
ELSE
...
END CASE;

と書きましょう。
    • good
    • 1
この回答へのお礼

なるほど。
わかりやすい回答ありがとうございました。

実は、

CASE MOJI
WHEN IS NULL THEN
....

とも書いてみたのですが、エラーとなった理由も
合点がいきました。

お礼日時:2010/03/09 13:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!