如何在sql server中编写案例?

时间:2011-12-08 07:31:03

标签: sql sql-server

在sqlserver中,我写了一个查询,我使用“case”但是它给出了错误,这是我的情况。

(case when sm.SegCode =0 then '' else sm.SegCode = 7 end)

请帮帮我。

感谢所有人给予回复,实际上我有一个参数@id。现在我想检查它何时不为零我检查条件sm.segcode如果@id为零,那么我不想检查sm.segcode = @id的条件。

3 个答案:

答案 0 :(得分:2)

您所展示的陈述有两个问题:

  • else sm.SegCode = 7
  • 的句法错误
  • 尝试将类型与空字符串和int
  • 混合

请改为尝试:

case when sm.SegCode = 0 then '' else '7' end

当然这是部分猜测,因为我不确定你想要通过将结果设置为空字符串或整数7来实现什么。

答案 1 :(得分:1)

这在语法上是正确的:

case sm.SegCode when '0' then '' else '7' end 

case sm.SegCode when 0 then NULL else 7 end 

如果该列允许NULL为

您可以在文档中查看有关案例的更多信息:http://msdn.microsoft.com/en-us/library/ms181765.aspx

答案 2 :(得分:0)

始终尝试从Same DATA TYPE语句返回Case值,似乎您的第一个condistion返回VARCHAR,而else部分返回INT,这是不可能的,最好将每个值转换为VARCHAR,因此在'7'语句中7将为else,谢谢

(CASE
    WHEN sm.SegCode = 0 THEN '' 
ELSE '7' END)