SQL_case 语法when

2023-05-19


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