让我说我有这张桌子
TABLE (Name varchar, Value varchar, Active bit)
和数据
'Name1', '1', NULL
'Name2', '1', NULL
'Name3', '1', 1
'Name4', '1', NULL
'Name3', '2', NULL
这个脚本我试图运行,但它只返回1行。
Select Name,Value FROM Table WHERE Active = IsNull(1,Active)
不应该返回表格中的所有NULL
和1
行吗?为什么这不能按预期工作?
答案 0 :(得分:3)
应该是:
WHERE Active IS NULL OR Active = 1
ISNULL()
函数用于将NULL
值替换为您想要的值。
表达式ISNULL(1, Active)
将始终返回1
,因为1
不为空。关于ISNULL()
用指定的替换值替换NULL。
语法
ISNULL(check_expression,replacement_value)
所以我认为这是你要构建的表达式:
WHERE ISNULL(Active, 1) = 1
答案 1 :(得分:1)
如果第一个参数为NULL,则ISNULL将使用第二个参数 这里第一个参数是1,它不是NULL,所以它的计算结果为1 因此,只有值为1的行才会匹配