在sql中使用的最佳选项是什么?
ISNULL(x, 0) = 0
或
(x is null OR x = 0)
由于
答案 0 :(得分:4)
除非您遇到任何性能问题,否则我建议使用最容易阅读的内容。当只有两个值(即NULL和0)时,COALESCE和ISNULL是相同的
答案 1 :(得分:2)
要使用的“最佳”取决于您正在撰写的查询,这是来自BOL中的COALESCE页面
ISNULL和COALESCE虽然相当, 可以表现得不同。一种表达 涉及ISNULL非null 参数被认为是NOT NULL,而表达式涉及 具有非空参数的COALESCE是 被认为是NULL。
因此,在不了解更多关于整个查询的情况下,它们可能是等效的但YMMV并且没有实际测试,您无法再猜测哪个更快。
此外,ISNULL
与COALESCE
的比较仅在您必须在两个值之间进行选择时才有用。只要有两个以上,您就需要使用COALESCE
。
答案 2 :(得分:0)
在这种情况下,我的模式是使用合并:
SELECT @SomeVariable = COALESCE(@SomeInputVariable, 0)
OR
SELECT * FROM Table WHERE Column > COALESCE(@SomeInputVariable, 0)
答案 3 :(得分:0)
它们应该是相同的,但实际上我对一些非常大的select语句进行了一些测试,并且isnull(x,0)= 0类似的条件被证明更快。
这个逻辑结论是SQL团队以某种方式对其进行了优化。
不是这样,coalesce应该用于isnull,因为coalesce是标准的sql方法,而isnull是MS特定的。这意味着将来(取决于MS的想法)isnull可能会被弃用。