如何在sql server中写case?
Posted
技术标签:
【中文标题】如何在sql server中写case?【英文标题】:How to write case in sql server? 【发布时间】:2011-12-08 07:31:03 【问题描述】:在 sqlserver 中,我写了一个查询,我使用“case”,但它给出了错误,这是我的情况。
(case when sm.SegCode =0 then '' else sm.SegCode = 7 end)
请帮帮我。
感谢大家的回复,其实我有一个参数@id
。现在我想检查它何时不为零我检查条件sm.segcode
否则如果@id
为零那么我不想检查条件sm.segcode = @id
。
【问题讨论】:
请贴出完整的sql语句。 在SSMS中将光标设置在CASE上,按F1就会看到这篇文章msdn.microsoft.com/en-us/library/ms181765.aspx。CASE
在 T-SQL 中只是一种返回不同值的方法 - 它不是流控制语句,例如您不能使用 CASE 来执行此代码或该代码。只需返回值...
【参考方案1】:
您显示的陈述有两个问题:
else sm.SegCode = 7
的语法错误
尝试将类型与空字符串和 int 混合
试试这个:
case when sm.SegCode = 0 then '' else '7' end
当然,这部分是猜测,因为我不确定您通过将结果设置为空字符串或整数 7 究竟想要达到什么目的。
【讨论】:
【参考方案2】:这在语法上是正确的:
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
【讨论】:
【参考方案3】:总是尝试从Case
语句返回Same DATA TYPE
值,似乎你的第一个条件返回VARCHAR
而else
部分返回INT
,这是不可能的,所以最好将每个值转换为VARCHAR
,所以 7 在else
语句中将是'7'
,谢谢
(CASE
WHEN sm.SegCode = 0 THEN ''
ELSE '7' END)
【讨论】:
以上是关于如何在sql server中写case?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不同条件的sql server的case语句中插入多个else?
如何在 SQL Server 的 Where 子句中使用 case 语句
SQL Server 2012:如何在 @Var 前后使用文字在 Case 语句中显示 @Var 结果
SQL Server 2008 - SELECT 子句中的 Case / If 语句 [重复]