sql中的case when
sql語言中有沒有類似C語言中的switch case的語句??
? 沒有,用case ? when ? 來代替就行了.???
???????
? 例如,下面的語句顯示中文年月 ??
? ??
? select ? getdate() ? as ? 日期,case ? month(getdate()) ??
? when ? 11 ? then ? '十一' ??
? when ? 12 ? then ? '十二' ??
? else ? substring('一二三四五六七八九十', ? month(getdate()),1) ??
? end+'月' ? as ? 月份
=================================================
CASE?可能是 SQL 中被誤用最多的關鍵字之一。雖然你可能以前用過這個關鍵字來創建字段,但是它還具有更多用法。例如,你可以在?WHERE?子句中使用?CASE。
?
首先讓我們看一下?CASE?的語法。在一般的?SELECT?中,其語法如下:?
?
SELECT?<myColumnSpec>?=?
CASE?
WHEN?<A>?THEN?<somethingA>?
WHEN?<B>?THEN?<somethingB>?
ELSE?<somethingE>?
END?
?
在上面的代碼中需要用具體的參數代替尖括號中的內容。下面是一個簡單的例子:?
?
USE?pubs?
GO?
SELECT?
???? Title,?
????'Price Range'?=?
????CASE?
????????WHEN?price?IS?NULL?THEN?'Unpriced'?
????????WHEN?price?<?10?THEN?'Bargain'?
????????WHEN?price?BETWEEN?10?and?20?THEN?'Average'?
????????ELSE?'Gift to impress relatives'?
????END?
FROM?titles?
ORDER?BY?price?
GO?
?
這是?CASE?的典型用法,但是使用?CASE?其實可以做更多的事情。比方說下面的?GROUP?BY?子句中的?CASE:?
?
SELECT?'Number of Titles',?Count(*)?
FROM?titles?
GROUP?BY?
????CASE?
????????WHEN?price?IS?NULL?THEN?'Unpriced'?
????????WHEN?price?<?10?THEN?'Bargain'?
????????WHEN?price?BETWEEN?10?and?20?THEN?'Average'?
????????ELSE?'Gift to impress relatives'?
????END?
GO?
?
你甚至還可以組合這些選項,添加一個?ORDER?BY?子句,如下所示:?
?
USE?pubs?
GO?
SELECT?
????CASE?
????????WHEN?price?IS?NULL?THEN?'Unpriced'?
????????WHEN?price?<?10?THEN?'Bargain'?
????????WHEN?price?BETWEEN?10?and?20?THEN?'Average'?
????????ELSE?'Gift to impress relatives'?
????END?AS?Range,?
???? Title?
FROM?titles?
GROUP?BY?
????CASE?
????????WHEN?price?IS?NULL?THEN?'Unpriced'?
????????WHEN?price?<?10?THEN?'Bargain'?
????????WHEN?price?BETWEEN?10?and?20?THEN?'Average'?
????????ELSE?'Gift to impress relatives'?
????END,?
???? Title?
ORDER?BY?
????CASE?
????????WHEN?price?IS?NULL?THEN?'Unpriced'?
????????WHEN?price?<?10?THEN?'Bargain'?
????????WHEN?price?BETWEEN?10?and?20?THEN?'Average'?
????????ELSE?'Gift to impress relatives'?
????END,?
???? Title?
GO?
?
注意,為了在?GROUP?BY?塊中使用?CASE,查詢語句需要在?GROUP?BY?塊中重復?SELECT?塊中的?CASE?塊。?
?
除了選擇自定義字段之外,在很多情況下?CASE?都非常有用。再深入一步,你還可以得到你以前認為不可能得到的分組排序結果集。
轉載于:https://www.cnblogs.com/xingmeng/p/3173482.html
總結
以上是生活随笔為你收集整理的sql中的case when的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这样设计是否更好些~仓储接口是否应该设计
- 下一篇: Ecshop支付宝网银支付插件|支付宝网