Oracle null检查字符串字段

sun*_*leo 2 sql oracle

在下面这个例子中为什么除了"NAME1"之外所有在oracle 11g中都给出了null.

如果我明确提到空间它需要空间否则为空而不是空字符串.请帮我澄清一下.

在NAME2中,我指定了空格,但仍然给出了空格.

select 
NVL(NAME,' ') AS NAME1,
NVL(NAME,'') AS NAME2,
NVL(NAME,NULL) AS NAME3,
NAME AS NAME4 
from employee
Run Code Online (Sandbox Code Playgroud)

输出:

(空间),NULL,NULL,NULL

bru*_*uno 8

因为在Oracle中,ZERO长度varchar被视为NULL.

在你的例子中

NVL(NAME, ' ') AS NAME1 will evaluate to either NAME or ' ' - empty string.
NVL(NAME, '') as NAME2 will evaluate to either NAME or a zero length string
Run Code Online (Sandbox Code Playgroud)