【发布时间】:2013-12-17 06:45:42
【问题描述】:
当我检查一个值是否为NULL时,我通常使用'=', 这不起作用,但“为空”有效。 为什么?有什么区别?
【问题讨论】:
-
将 null 视为单元格的“状态”而不是“内容值”。
标签: sql
当我检查一个值是否为NULL时,我通常使用'=', 这不起作用,但“为空”有效。 为什么?有什么区别?
【问题讨论】:
标签: sql
WHERE myvalue = null
永远不会是真的。因为即使“myvalue”是未定义的(“null”),数据库也无法确定它等于null(因为null的定义意味着“未知”,两个“未知”不能彼此相等)。
WHERE myvalue IS null
更直接。这将检查“myvalue”是否未定义(在数据库术语中为“null”)。
【讨论】:
基本上,null 可以被认为是没有值或不知道值。 比较运算符(例如 =)有效地询问未知或不存在的值是否等于另一个未知或不存在的值。在这种情况下,唯一合理的返回是另一个未知或不存在的值 - null。
IS NULL 询问值是未知还是不存在 - 这可以返回真或假。
【讨论】:
请看这里
http://technet.microsoft.com/en-us/library/ms188048.aspx
你可以试试下面的代码。这是针对 SQL SEVER 的
设置 ANSI_NULLS 关闭
声明@VALUE INT =NULL 如果@VALUE=NULL 打印 'IN 1' 如果@VALUE 为空 打印“输入 2”
【讨论】: