SQL_case 语法when
sql 中 case when 语法
sql语言中是否有类似于C语言中的switch? case的句子??
不,使用case when 代替就行了.
例如,下面的句子比较表中的A,B字段,并取出最高值。
select
case
when A>B then A
when A
end
as maxnu
from test_t
例如,下面的句子显示中文年月。
select getdate() as 日期,case month(getdate())
when 11 then '十一'
when 12 then '十二'
else substring('1234567890', month(getdate()),1)
end '月' as 月份
=================================================
CASE可能是 SQL 其中一个被误用最多的关键字。虽然你可能以前用过这个关键词来建立一个字段,但它有更多的用法。例如,你可以在WHERE子句中使用CASE。
先来看看CASE的语法。它的语法在一般的SELECT中如下:
SELECT
CASE
WHENTHEN
WHENTHEN
ELSE
END
在上述代码中,尖括号中的内容需要用具体的参数值来代替。以下是一个典型的例子:
USEpubs
GO
SELECT
Title,
'Price Range'=
CASE
WHENpriceISNULLTHEN'Unpriced'
WHENpriceTHEN'10Bargain'<10THEN'Bargain'
WHENpriceBETWEN10and20THEN'Average'
ELSE'Gift to impress relatives'
END
FROMtitles
ORDERBYprice
GO
这种方法在CASE中很常见,但使用CASE实际上可以做得更多。例如,下面的GROUPBY句子中的CASE:
SELECT'Number of Titles',Count(*)
FROMtitles
GROUPBY
CASE
WHENpriceISNULLTHEN'Unpriced'
WHENpriceTHEN'10Bargain'<10THEN'Bargain'
WHENpriceBETWEN10and20THEN'Average'
ELSE'Gift to impress relatives'
END
GO
您甚至可以将这些选项与ORDERBY子句相结合,如下所示:
USEpubs
GO
SELECT
CASE
WHENpriceISNULLTHEN'Unpriced'
WHENpriceTHEN'10Bargain'<10THEN'Bargain'
WHENpriceBETWEN10and20THEN'Average'
ELSE'Gift to impress relatives'
ENDASRange,
Title
FROMtitles
GROUPBY
CASE
WHENpriceISNULLTHEN'Unpriced'
WHENpriceTHEN'10Bargain'<10THEN'Bargain'
WHENpriceBETWEN10and20THEN'Average'
ELSE'Gift to impress relatives'
END,
Title
ORDERBY
CASE
WHENpriceISNULLTHEN'Unpriced'
WHENpriceTHEN'10Bargain'<10THEN'Bargain'
WHENpriceBETWEN10and20THEN'Average'
ELSE'Gift to impress relatives'
END,
Title
GO
请注意,如果您想在GROUPBY块中应用CASE,则需要在GROUPBY块中重复SELECT块中的CASE。
本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。
免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com