出自ProgWiki
用途
程式碼
-- 物件: UserDefinedFunction [dbo].[Country2Continent]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date, ,>
-- Description: <Description, ,>
-- =============================================
CREATE FUNCTION [dbo].[Country2Continent]
(
@Country AS VARCHAR(32)
)
RETURNS VARCHAR(32)
AS
BEGIN
-- Declare the return variable here
DECLARE @Continent AS VARCHAR(32);
-- Add the T-SQL statements to compute the return value here
SELECT @Continent=CASE
WHEN @Country in (
/* 東亞 */
'中華人民共和國','大陸地區','中國大陸','香港','澳門',
'台灣','臺灣','中華民國','TAIWAN','台澎金馬',
'蒙古',
'日本','沖繩','琉球群島',
'朝鮮','北韓',
'韓國','南韓',
/* 東南亞 */
'越南','泰國','寮國','緬甸','柬埔寨',
'印尼','汶萊','新加坡','東帝汶','菲律賓','馬來西亞',
/* 南亞 */
'孟加拉','不丹','印度','馬爾地夫','尼泊爾','巴基斯坦','斯里蘭卡',
/* 中亞 */
'哈薩克','吉爾吉斯','塔吉克','土庫曼','烏茲別克',
/* 西亞 */
'亞美尼亞','亞塞拜然','巴林','賽普勒斯','喬治亞','伊朗','伊拉克',
'以色列','約旦','科威特','黎巴嫩','阿曼','巴勒斯坦',
'卡達','沙烏地阿拉伯','敘利亞','阿拉伯聯合大公國','葉門','土耳其'
) THEN '亞洲'
WHEN @Country in (
/* 西歐 */
'奧地利','比利時','法國','德國','愛爾蘭','列支敦斯登',
'盧森堡','摩納哥','荷蘭','瑞士','英國',
/* 北歐 */
'丹麥','芬蘭','冰島','挪威','瑞典',
/* 東歐 */
'白俄羅斯','捷克','愛沙尼亞','匈牙利','拉脫維亞',
'立陶宛','摩爾多瓦','波蘭','斯洛伐克','烏克蘭',
/* 南歐 */
'阿爾巴尼亞','安道爾','波士尼亞赫塞哥維納','保加利亞',
'克羅埃西亞','希臘','義大利','科索沃','馬其頓','馬爾他',
'蒙特內哥羅',' 葡萄牙','羅馬尼亞','聖馬利諾','塞爾維亞',
'斯洛維尼亞','西班牙','梵蒂岡'
) THEN '歐洲'
WHEN @Country in (
/* 北美 */
'加拿大','美國','格陵蘭','百慕達'
) THEN '北美洲'
WHEN @Country in (
/* 中美 */
'貝里斯','哥斯大黎加','薩爾瓦多','瓜地馬拉','宏都拉斯','尼加拉瓜','巴拿馬',
'巴哈馬','古巴','牙買加','海地','多明尼加','巴貝多','千里達','格瑞那達',
'多米尼克','聖露西亞','聖文森','聖克里斯多福'
) THEN '中美洲'
WHEN @Country in (
/* 南美 */
'阿根廷','玻利維亞','巴西','智利','哥倫比亞',
'福克蘭群島','法屬蓋亞那','蓋亞那','巴拉圭',
'秘魯','蘇利南','烏拉圭','委內瑞拉'
) THEN '南美洲'
WHEN @Country in (
/* 北非 */
'阿爾及利亞','埃及','利比亞','摩洛哥','蘇丹','突尼西亞',
/* 西非 */
'貝南','布吉納法索','查德','象牙海岸','甘比亞','迦納','幾內亞','幾內亞比索',
'賴比瑞亞','馬利','尼日','茅利塔尼亞','奈及利亞','塞內加爾','獅子山','多哥','維德角',
/* 中非 */
'喀麥隆','中非','赤道幾內亞','加彭','剛果共和國','剛果民主共和國',
/* 南非 */
'安哥拉','波札那','葛摩','賴索托','馬達加斯加','馬拉威','模里西斯',
'莫三比克','納米比亞','史瓦濟蘭','南非','尚比亞','辛巴威',
/* 東非 */
'蒲隆地','吉布地','厄利垂亞','衣索比亞','肯亞','盧安達','塞席爾','索馬利亞',
'坦尚尼亞','烏干達爾及利亞','埃及','利比亞','摩洛哥','蘇丹','突尼西亞'
) THEN '非洲'
WHEN @Country in (
/* 大洋洲 */
'澳大利亞','澳洲','紐西蘭','巴布亞新幾內亞','斐濟',
'密克羅尼西亞','諾魯','薩摩亞','湯加','萬那杜','馬紹爾群島',
'帕勞','索羅門群島','基裡巴斯','吐瓦魯'
) THEN '大洋洲'
END
-- Return the result of the function
RETURN @Continent;
END
GO