Использование нулевых переменных в условиях в T-Sql - PullRequest
4 голосов
/ 18 августа 2011

Есть ли способ использовать переменную следующим образом?

DECLARE @ID int;
SET @ID = NULL;
SELECT *
FROM Market market
WHERE market.ID IS @ID

Или есть другой способ сделать это?

Спасибо.

Ответы [ 3 ]

12 голосов
/ 18 августа 2011

Вам нужно сделать

SELECT *
FROM Market market
WHERE market.ID = @ID OR (@ID IS NULL AND market.ID IS NULL)

Просто для полноты на данный момент все еще можно сделать

SET ANSI_NULLS OFF

SELECT *
FROM Market market
WHERE market.ID = @ID

, но вы не должны.Эта опция устарела. Довольно интересное сообщение в блоге

2 голосов
/ 18 августа 2011

Есть ли конкретная причина, по которой вы пытаетесь вставить ноль в переменную, а не просто делаете:

0 голосов
/ 18 августа 2011

Если вы просто хотите определить, является ли market.ID нулевым, вы должны сделать это

SELECT *
FROM Market market
WHERE market.ID IS NULL

Если вы проверяете, имеет ли market.ID значение null или какое-то другое значение, попробуйте это

SELECT *
FROM Market market
WHERE market.ID IS NULL
  OR market.ID = @ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...