SQL 中无表达式 CASE 内有多个 WHEN?
DECLARE @TestVal int
SET @TestVal = 5
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
ELSE 'Other'
END
我在网上看到了这个示例代码,但我找不到没有表达式并且有多个 WHEN 的示例,所以我想知道这种类型的事情是否可以:
DECLARE @TestVal int
SET @TestVal = 5
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
WHEN (select ...) = 1 THEN 'Other Value'
WHEN (select ...) = 2 THEN 'Other Value 2'
ELSE 'Other'
END
或者我需要为每一行说 CASE WHEN ?
DECLARE @TestVal int
SET @TestVal = 5
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
ELSE 'Other'
END
I saw this sample code online but I couldn't find an example where there was no expression and it had more than one WHEN, so I am wondering if this type of thing is OK:
DECLARE @TestVal int
SET @TestVal = 5
SELECT
CASE
WHEN @TestVal <=3 THEN 'Top 3'
WHEN (select ...) = 1 THEN 'Other Value'
WHEN (select ...) = 2 THEN 'Other Value 2'
ELSE 'Other'
END
Or do I need to say CASE WHEN for each line?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,没问题,但我会垂直排列“WHEN”并像这样解释它:
格式可能只是一个降价故障,但示例中的
(select...)
复杂的东西应该是一个简单的片段。Yes, that's fine, but I would line up the "WHEN"s vertically and explain it more like this:
The formatting might just be a markdown glitch, but the
(select...)
in your example complicated what should be a simpler snippet.案例采用以下形式
编辑
这假设您使用 Microsoft SQL Server 其他 DBMS可能会有所不同
Case takes the following form
Edit
This assumes your using Microsoft SQL Server other DBMS might be different
对于嵌套 case 语句,也可以这样做(sql 中最多允许 10 个嵌套 case 语句)
http://msdn.microsoft.com/en-us/library/ms181765.aspx
In regards to nesting case statements this can be done as well (up until 10 nested case statements allowed within sql)
http://msdn.microsoft.com/en-us/library/ms181765.aspx