我需要在sql中的where子句中使用if语句。
Select * from Customer
WHERE (I.IsClose=@ISClose OR @ISClose is NULL)
AND
(C.FirstName like '%'+@ClientName+'%' or @ClientName is NULL )
AND
if (@Value=2)
begin
(I.RecurringCharge=@Total or @Total is NULL )
end
else if(@Value=3)
begin
(I.RecurringCharge like '%'+cast(@Total as varchar(50))+'%' or @Total is NULL )
end
注意:这不是完整的代码。所有内容都在SP中定义。我刚刚编写了理解这个问题所需的代码。
4条答案
按热度按时间0ve6wy6x1#
基本上,你的情况是
翻转过来,
当**(A)为真时,即@Value为而不是**2时,无论B和C的结果如何,[A或B或C]都将变为TRUE,B和C实际上只有在
@Value = 2
时才被检查,这是初衷。btqmn9zl2#
必须使用CASE Statement/Expression
pprl5pva3#
以确定您使用的是哪个RDBMS,但如果是SQL Server,您可以使用CASE statement
计算条件列表并返回多个可能的结果表达式之一。
CASE表达式有两种格式:
简单CASE表达式将一个表达式与一组简单表达式进行比较以确定结果。
搜索的CASE表达式计算一组布尔表达式以确定结果。
这两种格式都支持可选的ELSE参数。
dldeef674#