在下面的示例中,除了"NAME1“之外,为什么所有的结果都为null而导致oracle11g。
如果我显式地提到空间,它会占用空间,否则只有空的,而不是空的string.Please,帮助我澄清这一点。
在NAME2中,我指定了空空间,但它仍然给出了null。
select
NVL(NAME,' ') AS NAME1,
NVL(NAME,'') AS NAME2,
NVL(NAME,NULL) AS NAME3,
NAME AS NAME4
from employee输出:
(空格),空
发布于 2013-03-12 09:44:45
因为在Oracle中,零长度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发布于 2013-03-12 10:59:30
因为“”等于甲骨文中的空。例如,这两个查询是相同的:
update test set name='' where id = 15
update test set name=null where id = 15发布于 2013-03-12 09:43:40
原因是,在Oracle中,空字符串等同于NULL。
通过执行下面的查询,可以看出这是正确的。
SELECT 'x' FROM DUAL WHERE '' IS NULL这应该返回一个行,这意味着条件'' IS NULL是true。
https://stackoverflow.com/questions/15357630
复制相似问题