在sqlserver中,我写了一个查询,我使用“case”但是它给出了错误,这是我的情况。
(case when sm.SegCode =0 then '' else sm.SegCode = 7 end)
请帮帮我。
感谢所有人给予回复,实际上我有一个参数@id
。现在我想检查它何时不为零我检查条件sm.segcode
如果@id
为零,那么我不想检查sm.segcode = @id
的条件。
答案 0 :(得分:2)
您所展示的陈述有两个问题:
else sm.SegCode = 7
请改为尝试:
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)