Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql where子句中T-SQL中的开关大小写_Tsql - Fatal编程技术网

Tsql where子句中T-SQL中的开关大小写

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

各位专家好,我有一个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 = @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时,则…否则…结束