Как использовать ISNULL в SQL между предложением - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть хранимая процедура SQL Server, которую кто-то написал, где он использует isnull в предложении where в сочетании с ключевым словом Между.Они используют следующее:

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

Что вернет это сравнение, если столбец JobNumber будет нулевым?Спасибо.

Ответы [ 3 ]

0 голосов
/ 27 сентября 2019

Это выражение запрещает использование индекса на JobNumber, если такой индекс существует.Удалите isnull, результат будет таким же, но быстрее.

0 голосов
/ 28 сентября 2019

переменная @BeginJob может быть передана в любом случае с помощью ''. Как столбец JobNumber может иметь нулевое значение, поэтому в случае пробела get возвращает все.

, потому что никакое сравнение между двумя нулевыми значениями не всегда будет равно нулю.

0 голосов
/ 27 сентября 2019

Будет переведено как пустая строка, так как ISNULL преобразует значения NULL параметра param1 (в столбце) в значение param2.Таким образом, в вашем случае вы используете значения столбца между x и y, но когда ноль, он будет использовать ""

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...