Tsql where子句中T-SQL中的开关大小写
各位专家好,我有一个Sp,它包含很多if/else条件 请帮助我如何在where子句中的T-SQL中使用Switch Case。 这是我的问题Tsql where子句中T-SQL中的开关大小写,tsql,Tsql,各位专家好,我有一个Sp,它包含很多if/else条件 请帮助我如何在where子句中的T-SQL中使用Switch Case。 这是我的问题 if (@Form ='page.aspx') begin select DT.Column,DST.Column1, DST.Code from Table DT join Table2 DST on DT.ID= DST.ID where DT.code = 'XX1' and DT.CDID = @c
if (@Form ='page.aspx')
begin
select
DT.Column,DST.Column1,
DST.Code from Table DT
join Table2 DST
on DT.ID= DST.ID
where
DT.code = 'XX1'
and DT.CDID = @cdid
end
if (@Form ='Page2.aspx')
begin
select
DT.Column,DST.Column1,
DST.Code from Table DT
join Table2 DST
on DT.ID= DST.ID
where
DT.code = 'XX2'
and DT.CDID = @cdid
end
请帮助我,任何提示或建议都会非常有用,谢谢
declare @dtCode varchar(255)
select @dtCode =
CASE @Form
WHEN 'page.aspx' then 'XX1'
WHEN 'page2.aspx' then 'XX2'
ELSE 'NoIdea'
END
select
DT.Column,DST.Column1,
DST.Code from Table DT
join Table2 DST
on DT.ID= DST.ID
where
DT.code = @dtCode
and DT.CDID = @cdid
注意:我是在记事本的帮助下写的&没有使用查询分析器检查语法错误。但是,我希望您能理解(当唯一改变的是dtCode的值时,不要重复SQL语句)。对于这个特定的查询,您可以编写
select
DT.Column,DST.Column1,
DST.Code from Table DT
join Table2 DST
on DT.ID= DST.ID
where
DT.code = case @Form when 'page.aspx' then 'XX1' else 'XX2' end
and DT.CDID = @cdid
感谢它的帮助,如果我需要在then条件中添加除=之外的其他运算符,如DT.code'zz'和DT.code'zz2',我们可以在其中添加多个条件吗(DST.code='LICVA'或DST.code='CLI',您可以在case关键字后面替换一个有效的布尔表达式。case(@Form='page.aspx'或@Form='page2.aspx'))当0时,则…否则…结束