我想这样做
(s.Reference = @Reference or @Reference = '')
但是我收到一个sql错误,说无法将nvarchar转换为bigint。发生了什么事。如果输入参数是空字符串,我只想在Refernce上跳过该查询。
答案 0 :(得分:1)
看起来Reference是一个数字字段。在这种情况下,您可能希望这样做:
(s.Reference = @Reference or @Reference is null)
当您将=''置于测试条件中时,您假设它是一个字符串。
答案 1 :(得分:0)
对于SQL Server
,最好的决定是:
SELECT *
FROM mytable
WHERE s.Reference = @Reference
UNION ALL
SELECT *
FROM mytable
WHERE @Reference IS NULL
它将优化其中一个查询并仅执行剩余的一个(如果需要,使用索引)。