Oracle 空文字の扱いについて
Oracleの空文字の扱いでハマってしまってしまいました。
TRIMをかけた値や「”」での判断についてまとめました。
空文字の比較
SELECT
-----①-----
CASE WHEN TRIM('A') <> ''
THEN '1'
ELSE '2'
END,
-----②-----
CASE WHEN TRIM('A') IS NOT NULL
THEN '1'
ELSE '2'
END
FROM DUAL
①は、空ではないと判断し「1」の結果が返ってくると思いきや、結果は「2」になります。
ORACLEでは「”」はNULLと判断されるようで、NULLではないため結果が「2」になってしまいます。
②のように値が入っているか判断するには「IS NOT NULL」で比較すれば結果が「1」になります。
空文字にTRIMをかけるとNULLになる
SELECT
-----①-----
CASE WHEN TRIM(' ') IS NULL
THEN '1'
ELSE '2'
END
-----②-----
,CASE WHEN TRIM(' ') = ''
THEN '1'
ELSE '2'
END
FROM DUAL
空文字にTRIMをかけるとNULLになります。
①はNULLと判断され結果が「1」になります。
②はともにNULLとなり結果が「1」になると思いきや「2」になります。
ご注意ください。
-
前の記事
Python Anacondaのインストール 2020.10.13
-
次の記事
マインドマップツール「MindMup2.0」 2020.10.23
コメントを書く