如果参数是空字符串,请不要检查字段

时间:2009-09-18 11:21:50

标签: sql

我想这样做

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

但是我收到一个sql错误,说无法将nvarchar转换为bigint。发生了什么事。如果输入参数是空字符串,我只想在Refernce上跳过该查询。

2 个答案:

答案 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

它将优化其中一个查询并仅执行剩余的一个(如果需要,使用索引)。