Не проверять поле, если параметр является пустой строкой - PullRequest
1 голос
/ 18 сентября 2009

Я хочу сделать это

(s.Reference = @Reference or @Reference = '')

но я получаю сообщение об ошибке sql, говорящее о невозможности конвертировать nvarchar в bigint. Что там происходит. Я просто хочу пропустить этот запрос в Refernce, если входным параметром является пустая строка.

Ответы [ 2 ]

1 голос
/ 18 сентября 2009

Похоже, что Ссылка является числовым полем. В этом случае вы, вероятно, хотите сделать:

(s.Reference = @Reference or @Reference is null)

Когда вы помещаете = '' в условие теста, вы делаете предположение, что это строка.

0 голосов
/ 18 сентября 2009

Для SQL Server лучшим решением будет следующее:

SELECT  *
FROM    mytable
WHERE   s.Reference = @Reference
UNION ALL
SELECT  *
FROM    mytable
WHERE   @Reference IS NULL

Он оптимизирует один из запросов и выполнит только оставшийся (используя при необходимости индекс).

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