如何在SQL之间的子句中使用ISNULL

时间:2019-09-27 18:07:54

标签: sql-server

我有一个SQL Server存储过程,有人在where子句中使用isnull结合between关键字在哪里写了他们。他们正在使用以下内容:

isnull(JobNumber, '') between @BeginJob and @EndJob

如果JobNumber列为空,此比较将返回什么?谢谢。

3 个答案:

答案 0 :(得分:0)

它将被转换为空字符串,因为ISNULL将param1(提供的列)的NULL值转换为param2值。因此,在您的情况下,您使用x和y之间的列值,但是当为null时,它将使用“”

https://docs.microsoft.com/en-us/sql/t-sql/functions/isnull-transact-sql?view=sql-server-2017

答案 1 :(得分:0)

如果存在这样的索引,此表达式将阻止在JobNumber上使用索引。删除isull,结果仍然相同,但是速度更快。

答案 2 :(得分:0)

在任何情况下变量@BeginJob都可以用''传递。看起来JobNumber列是可以为空的,这就是为什么在空格的情况下全部返回的原因。

因为两个空值之间没有比较值总是为空。