Я хочу сделать это
(s.Reference = @Reference or @Reference = '')
но я получаю сообщение об ошибке sql, говорящее о невозможности конвертировать nvarchar в bigint. Что там происходит. Я просто хочу пропустить этот запрос в Refernce, если входным параметром является пустая строка.
Похоже, что Ссылка является числовым полем. В этом случае вы, вероятно, хотите сделать:
(s.Reference = @Reference or @Reference is null)
Когда вы помещаете = '' в условие теста, вы делаете предположение, что это строка.
Для SQL Server лучшим решением будет следующее:
SQL Server
SELECT * FROM mytable WHERE s.Reference = @Reference UNION ALL SELECT * FROM mytable WHERE @Reference IS NULL
Он оптимизирует один из запросов и выполнит только оставшийся (используя при необходимости индекс).