where子句不适用于SQL存储过程中所期望的varchar字段

时间:2018-03-09 10:07:11

标签: sql-server sql-server-2008 stored-procedures where-clause

我有一个存储过程(动态工作),它接受许多参数,一个这样的参数是@lAmountValue,它根据字段Min过滤掉记录。我使用下面的where子句根据Min的值过滤掉记录。但它正在错误地检索记录,它取出空值,空字符串和我的条件以及大于指定值的值(当使用EqualTo标准搜索时)。相同的过滤器对数字字段正常工作,但对varchar字段不起作用。 Min是一个varchar字段,表中的列值可以包含Null,空字符串,数字和字符串。请帮助找出我的where子句中的错误。

if @lComparer = 'EqualTo'               
    Set @Query= @Query +'and TN.Min is not null and TN.Min !='' and cast(TN.Min as varchar(30)) = '''' + CAST(@lAmountValue as varchar(30)) + '''' '            
else if @lComparer = 'GreaterThan' 
    Set @Query= @Query +'and TN.Min is not null and TN.Min !='' and cast(TN.Min as varchar(30)) > '''' + CAST(@lAmountValue as varchar(30)) + '''' '    
else if @lComparer = 'LessThan'                                 
    Set @Query= @Query +'and TN.Min is not null and TN.Min !='' and cast(TN.Min as varchar(30)) < '''' + CAST(@lAmountValue as varchar(30)) + '''' '        

0 个答案:

没有答案