Re: 問題ID: 19976
quensan
投稿数: 119
Oracleでは空文字('')はNULLとして扱われるみたいです。
問題のNVL2をさらにNVL2で囲むと、''を返す行はNULL値のようで、'NULLだよ'と出てきました。
SELECT employee_name, NVL2((NVL2(salary, salary + 10000, '')), 'NULLじゃない', 'NULLだよ') FROM employees;
ちなみに、引数2と引数3は暗黙の型変換が可能な場合はエラーになりません。('AAA'はだめだけど、'123'はOK)
問題のNVL2をさらにNVL2で囲むと、''を返す行はNULL値のようで、'NULLだよ'と出てきました。
SELECT employee_name, NVL2((NVL2(salary, salary + 10000, '')), 'NULLじゃない', 'NULLだよ') FROM employees;
ちなみに、引数2と引数3は暗黙の型変換が可能な場合はエラーになりません。('AAA'はだめだけど、'123'はOK)
ただし、第2引数と第3引数は同じデータ型でなければなりません(暗黙的なデータ変換が行われる場合はエラーとなりません)。異なるデータ型を返す式を指定するとエラーとなります。
投稿ツリー
-
問題ID: 19976
(bucchakete, 2017-12-4 23:08)
-
Re: 問題ID: 19976
(quensan, 2017-12-5 9:53)
- Re: 問題ID: 19976 (bucchakete, 2017-12-5 18:40)
-
Re: 問題ID: 19976
(quensan, 2017-12-5 9:53)