我有以下代码。
.....
.....
WHERE 0 = 0
AND Isnull(something, 1) = 1
....
....
我知道notull函数会查看某些东西,如果它为null,则将其替换为1。但是 = 1 的确切含义是什么?
我正在使用Microsoft SQL Server,代码为Coldfusion。
答案 0 :(得分:7)
您的查询Isnull(something, 1) = 1
表示要返回something
和null
仅具有1
值的WHERE (something IS NULL OR something = 1)
。
我将其重写为使其成为 Sargable :
hg log
答案 1 :(得分:3)
这等效于:
WHERE something IS NULL or something = 1;
因为0=0
始终是true
。
答案 2 :(得分:3)
如果它为null,它将用1代替某物的值(列名用于行),然后检查输出是否为1。基本上,它正在检查该值是否为空。
答案 3 :(得分:2)
其核心是,如果经过null检查的值(某物)为null或恰好为1,则该表达式的值为true。
如果某些值等于null,则ISNULL(p1,p2)的结果为p2的值。 如果某物等于null以外的任何东西,则其求值为p1的值。 然后该表达式将根据ISNULL的结果求值
p1 p2 ISNULL-result expression result
null 1 1 = 1 true
1 1 1 = 1 true
2 1 2 = 1 false
1 1 1 = 2 false
null 2 2 = 2 true