国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

CASE在sql server中的使用用法
2006-04-05   網絡

CASE 語句在sql server跟其它程序語言中的switch功能類似,用于計算條件列表并返回多個可能結果表達式之一。
在sql server中CASE具有兩種格式:
a.簡單 CASE 函數將某個表達式與一組簡單表達式進行比較以確定結果。

b.CASE 搜索函數計算一組布爾表達式以確定結果。
以上兩種格式都支持可選的 ELSE 參數。

常見的幾種CASE語句的用法如下所示:
1.CASE 函數用于計算多個條件并為每個條件返回單個值。CASE 函數通常的用途是使用可讀性更強的值替換代碼或縮寫。
下面的查詢使用 CASE 函數重命名書籍的分類,以使之更易理解。

USE pubs
SELECT
CASE type
WHEN 'popular_comp' THEN 'Popular Computing'
WHEN 'mod_cook' THEN 'Modern Cooking'
WHEN 'business' THEN 'Business'
WHEN 'psychology' THEN 'Psychology'
WHEN 'trad_cook' THEN 'Traditional Cooking'
ELSE 'Not yet categorized'
END AS Category,
CONVERT(varchar(30), title) AS "Shortened Title",
price AS Price
FROM titles
WHERE price IS NOT NULL
ORDER BY 1

2.使用帶有簡單 CASE 函數和 CASE 搜索函數的 SELECT 語句

CASE 函數的另一個用途給數據分類。下面的查詢使用 CASE 函數對價格分類。

SELECT
CASE
WHEN price IS NULL THEN 'Not yet priced'
WHEN price < 10 THEN 'Very Reasonable Title'
WHEN price >= 10 and price < 20 THEN 'Coffee Table Title'
ELSE 'Expensive book!'
END AS "Price Category",
CONVERT(varchar(20), title) AS "Shortened Title"
FROM pubs.dbo.titles
ORDER BY price

3.使用帶有 SUBSTRING 和 SELECT 的 CASE 函數
下面的示例使用 CASE 和 THEN 生成一個有關作者、圖書標識號和每個作者所著圖書類型的列表。

USE pubs
SELECT SUBSTRING((RTRIM(a.au_fname) + ' '+
RTRIM(a.au_lname) + ' '), 1, 25) AS Name, a.au_id, ta.title_id,
Type =
CASE
WHEN SUBSTRING(ta.title_id, 1, 2) = 'BU' THEN 'Business'
WHEN SUBSTRING(ta.title_id, 1, 2) = 'MC' THEN 'Modern Cooking'
WHEN SUBSTRING(ta.title_id, 1, 2) = 'PC' THEN 'Popular Computing'
WHEN SUBSTRING(ta.title_id, 1, 2) = 'PS' THEN 'Psychology'
WHEN SUBSTRING(ta.title_id, 1, 2) = 'TC' THEN 'Traditional Cooking'
END
FROM titleauthor ta JOIN authors a ON ta.au_id = a.au_id

4.在Group by子句中使用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 塊。


熱詞搜索:

上一篇:WinXP不能關機等問答八則
下一篇:將SQL中的數據導入到Access中的兩個方法

分享到: 收藏
主站蜘蛛池模板: 桃园县| 郎溪县| 雅安市| 勃利县| 册亨县| 木兰县| 昌宁县| 扎囊县| 贵州省| 海门市| 金阳县| 宜丰县| 广河县| 余江县| 巫溪县| 湟源县| 东乡县| 湘潭市| 望奎县| 繁峙县| 日土县| 永年县| 尚志市| 安多县| 金乡县| 平原县| 土默特左旗| 康定县| 宁阳县| 涪陵区| 南康市| 仁化县| 都匀市| 化德县| 襄城县| 东乡县| 巴林右旗| 淄博市| 通河县| 祁门县| 海城市|