Mysql中NULL和空值之间的区别

时间:2014-06-27 05:26:32

标签: mysql sql

我必须检查名为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; "

4 个答案:

答案 0 :(得分:23)

  1. NULL缺少值。空字符串是一个值,但只是空的。 NULL对于数据库来说是特殊的。

  2. NULL没有界限,可用于数据库中的stringintegerdate等字段。

    < / LI>
  3. NULL未分配任何内存,string NULL值只是指向内存中无处的指针。但是,空IS被分配到内存位置,尽管存储在内存中的值是""

答案 1 :(得分:2)

在三值逻辑中,NULL应该用于表示&#34; unknown&#34;或&#34;不适用&#34;空列应表示已知但空的&#34;。

有些DBMS产品并不是一直遵循这个惯例,但我认为它们有缺陷。是的,你知道你是谁,甲骨文: - )

此外,虽然可以将NULL放入任何列类型(暂时忽略not null子句),但是不能将&#34;空的&#34;将值转换为非字符字段(如integer)。

答案 2 :(得分:1)

添加到@ricky,NULL永远不能等于NULL,但空字符串总是等于空字符串。当你试图匹配记录时,这是一个巨大的差异。

答案 3 :(得分:0)

数据库系统中的NULL - 没有为字段设置值。无效

NULL(字符) - 空白,没有图形表示的ASCII / Unicode字符。但它在代码页中作为字符常量存在&#39; \ 0&#39;字符值为0或000。