Вернуть все строки, если поле пустое или пустое - PullRequest
1 голос
/ 05 апреля 2011

Как мне сделать так, чтобы все результаты возвращались, если @title равно нулю или пусто ''?

@title varchar

AS

SELECT *
FROM mydb
Where (Title = @title)

Я пытался возиться по-разному, но я не получаю никаких возвратов строк. Мне просто нужно вернуть все строки, если в параметр ничего не вставлено.

Ответы [ 2 ]

4 голосов
/ 05 апреля 2011

Добавить:

...
OR @Title IS NULL
OR @Title = ''

OR делает его включающим, и вы не сможете @Title соответствовать более чем одному из этих трех критериев (если ваше поле Title не имеет NULL или пустые значения).

1 голос
/ 05 апреля 2011

Использование:

IF LEN(@title) > 0 THEN
BEGIN 

  SELECT * FROM mydb t
   WHERE t.title = @title

END
ELSE
BEGIN 

  SELECT * FROM mydb 

END

Вы можете использовать:

SELECT *
  FROM mydb
 WHERE (LEN(@title) = 0 OR t.title = @title)

..., чтобы использовать переменную @title только в том случае, если она не равна нулевой длине или NULL, но операторне саркастично - оно не будет работать так же хорошо, как если бы оно вырвалось из утверждения, чтобы быть только тем, чем оно должно быть для ситуации.

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