我必须检查名为RESULT
的特定列的值是否为空。
当我查看if RESULT IS NULL
时,查询失败了,但当我选中RESULT=''
时,它就有效了。
两者之间有什么区别。
请解释。
"UPDATE RLS_TP_2012_03 a, RLS_TP_2012_03 b SET a.COMMENT=b.COMMENT where b.TCODE='T1199' and a.GROUPNAME='xyz' and a.HLABNO=b.HLABNO and a.RESULT =''; ";
"UPDATE RLS_TP_2012_03 a, RLS_TP_2012_03 b SET a.COMMENT=b.COMMENT where b.TCODE='T1199' and a.GROUPNAME='xyz' and a.HLABNO=b.HLABNO and a.RESULT is NULL; "
答案 0 :(得分:23)
NULL
缺少值。空字符串是一个值,但只是空的。 NULL
对于数据库来说是特殊的。
NULL
没有界限,可用于数据库中的string
,integer
,date
等字段。
NULL
未分配任何内存,string
NULL
值只是指向内存中无处的指针。但是,空IS被分配到内存位置,尽管存储在内存中的值是""
。
答案 1 :(得分:2)
在三值逻辑中,NULL应该用于表示" unknown"或"不适用"空列应表示已知但空的"。
有些DBMS产品并不是一直遵循这个惯例,但我认为它们有缺陷。是的,你知道你是谁,甲骨文: - )
此外,虽然可以将NULL放入任何列类型(暂时忽略not null
子句),但是不能将"空的"将值转换为非字符字段(如integer
)。
答案 2 :(得分:1)
添加到@ricky,NULL永远不能等于NULL,但空字符串总是等于空字符串。当你试图匹配记录时,这是一个巨大的差异。
答案 3 :(得分:0)
数据库系统中的NULL - 没有为字段设置值。无效
NULL(字符) - 空白,没有图形表示的ASCII / Unicode字符。但它在代码页中作为字符常量存在' \ 0'字符值为0或000。