作者不详
Create
FUNCTION
dbo.procGetPY
(
@str NVARCHAR(4000)
)
RETURNS
NVARCHAR(4000)
AS
BEGIN
DECLARE
@WORD
NCHAR
(1),@PY NVARCHAR(4000)
SET
@PY=
''
WHILE LEN(@STR)>0
BEGIN
SET
@WORD=
LEFT
(@STR,1)
SET
@PY=@PY+(
CASE
WHEN
UNICODE(@WORD)
BETWEEN
19968
AND
19968+20901
THEN
(
SELECT
TOP
1 PY
FROM
(
SELECT
'A'
AS
PY,N
'驁'
AS
WORD
UNION
ALL
SELECT
'B'
,N
'簿'
UNION
ALL
SELECT
'C'
,N
'錯'
UNION
ALL
SELECT
'D'
,N
'鵽'
UNION
ALL
SELECT
'E'
,N
'樲'
UNION
ALL
SELECT
'F'
,N
'鰒'
UNION
ALL
SELECT
'G'
,N
'腂'
UNION
ALL
SELECT
'H'
,N
'夻'
UNION
ALL
SELECT
'J'
,N
'攈'
UNION
ALL
SELECT
'K'
,N
'穒'
UNION
ALL
SELECT
'L'
,N
'鱳'
UNION
ALL
SELECT
'M'
,N
'旀'
UNION
ALL
SELECT
'N'
,N
'桛'
UNION
ALL
SELECT
'O'
,N
'漚'
UNION
ALL
SELECT
'P'
,N
'曝'
UNION
ALL
SELECT
'Q'
,N
'囕'
UNION
ALL
SELECT
'R'
,N
'鶸'
UNION
ALL
SELECT
'S'
,N
'蜶'
UNION
ALL
SELECT
'T'
,N
'籜'
UNION
ALL
SELECT
'W'
,N
'鶩'
UNION
ALL
SELECT
'X'
,N
'鑂'
UNION
ALL
SELECT
'Y'
,N
'韻'
UNION
ALL
SELECT
'Z'
,N
'做'
) T
WHERE
WORD>=@WORD
COLLATE
CHINESE_PRC_CS_AS_KS_WS
ORDER
BY
PY
ASC
)
ELSE
@WORD
END
)
SET
@STR=
RIGHT
(@STR,LEN(@STR)-1)
END
RETURN
@PY
END
Go
create
function
[dbo].procGetPinYin(@str
varchar
(100))
returns
varchar
(8000)
as
begin
declare
@re
varchar
(8000),@crs
varchar
(10)
declare
@strlen
int
select
@strlen=len(@str),@re=
''
while @strlen>0
begin
set
@crs=
substring
(@str,@strlen,1)
select
@re=
case
when
@crs<
'吖'
then
@crs
when
@crs<=
'厑'
then
'a'
when
@crs<=
'靉'
then
'ai'
when
@crs<=
'黯'
then
'an'
when
@crs<=
'醠'
then
'ang'
when
@crs<=
'驁'
then
'ao'
when
@crs<=
'欛'
then
'ba'
when
@crs<=
'瓸'
then
'bai'
when
@crs<=
'瓣'
then
'ban'
when
@crs<=
'鎊'
then
'bang'
when
@crs<=
'鑤'
then
'bao'
when
@crs<=
'鐾'
then
'bei'
when
@crs<=
'輽'
then
'ben'
when
@crs<=
'鏰'
then
'beng'
when
@crs<=
'鼊'
then
'bi'
when
@crs<=
'變'
then
'bian'
when
@crs<=
'鰾'
then
'biao'
when
@crs<=
'彆'
then
'bie'
when
@crs<=
'鬢'
then
'bin'
when
@crs<=
'靐'
then
'bing'
when
@crs<=
'蔔'
then
'bo'
when
@crs<=
'簿'
then
'bu'
when
@crs<=
'囃'
then
'ca'
when
@crs<=
'乲'
then
'cai'
when
@crs<=
'爘'
then
'can'
when
@crs<=
'賶'
then
'cang'
when
@crs<=
'鼜'
then
'cao'
when
@crs<=
'簎'
then
'ce'
when
@crs<=
'笒'
then
'cen'
when
@crs<=
'乽'
then
'ceng'
when
@crs<=
'詫'
then
'cha'
when
@crs<=
'囆'
then
'chai'
when
@crs<=
'顫'
then
'chan'
when
@crs<=
'韔'
then
'chang'
when
@crs<=
'觘'
then
'chao'
when
@crs<=
'爡'
then
'che'
when
@crs<=
'讖'
then
'chen'
when
@crs<=
'秤'
then
'cheng'
when
@crs<=
'鷘'
then
'chi'
when
@crs<=
'銃'
then
'chong'
when
@crs<=
'殠'
then
'chou'
when
@crs<=
'矗'
then
'chu'
when
@crs<=
'踹'
then
'chuai'
when
@crs<=
'鶨'
then
'chuan'
when
@crs<=
'愴'
then
'chuang'
when
@crs<=
'顀'
then
'chui'
when
@crs<=
'蠢'
then
'chun'
when
@crs<=
'縒'
then
'chuo'
when
@crs<=
'嗭'
then
'ci'
when
@crs<=
'謥'
then
'cong'
when
@crs<=
'輳'
then
'cou'
when
@crs<=
'顣'
then
'cu'
when
@crs<=
'爨'
then
'cuan'
when
@crs<=
'臎'
then
'cui'
when
@crs<=
'籿'
then
'cun'
when
@crs<=
'錯'
then
'cuo'
when
@crs<=
'橽'
then
'da'
when
@crs<=
'靆'
then
'dai'
when
@crs<=
'饏'
then
'dan'
when
@crs<=
'闣'
then
'dang'
when
@crs<=
'纛'
then
'dao'
when
@crs<=
'的'
then
'de'
when
@crs<=
'扽'
then
'den'
when
@crs<=
'鐙'
then
'deng'
when
@crs<=
'螮'
then
'di'
when
@crs<=
'嗲'
then
'dia'
when
@crs<=
'驔'
then
'dian'
when
@crs<=
'鑃'
then
'diao'
when
@crs<=
'嚸'
then
'die'
when
@crs<=
'顁'
then
'ding'
when
@crs<=
'銩'
then
'diu'
when
@crs<=
'霘'
then
'dong'
when
@crs<=
'鬭'
then
'dou'
when
@crs<=
'蠹'
then
'du'
when
@crs<=
'叾'
then
'duan'
when
@crs<=
'譵'
then
'dui'
when
@crs<=
'踲'
then
'dun'
when
@crs<=
'鵽'
then
'duo'
when
@crs<=
'鱷'
then
'e'
when
@crs<=
'摁'
then
'en'
when
@crs<=
'鞥'
then
'eng'
when
@crs<=
'樲'
then
'er'
when
@crs<=
'髮'
then
'fa'
when
@crs<=
'瀪'
then
'fan'
when
@crs<=
'放'
then
'fang'
when
@crs<=
'靅'
then
'fei'
when
@crs<=
'鱝'
then
'fen'
when
@crs<=
'覅'
then
'feng'
when
@crs<=
'梻'
then
'fo'
when
@crs<=
'鴀'
then
'fou'
when
@crs<=
'猤'
then
'fu'
when
@crs<=
'魀'
then
'ga'
when
@crs<=
'瓂'
then
'gai'
when
@crs<=
'灨'
then
'gan'
when
@crs<=
'戇'
then
'gang'
when
@crs<=
'鋯'
then
'gao'
when
@crs<=
'獦'
then
'ge'
when
@crs<=
'給'
then
'gei'
when
@crs<=
'搄'
then
'gen'
when
@crs<=
'堩'
then
'geng'
when
@crs<=
'兣'
then
'gong'
when
@crs<=
'購'
then
'gou'
when
@crs<=
'顧'
then
'gu'
when
@crs<=
'詿'
then
'gua'
when
@crs<=
'恠'
then
'guai'
when
@crs<=
'鱹'
then
'guan'
when
@crs<=
'撗'
then
'guang'
when
@crs<=
'鱥'
then
'gui'
when
@crs<=
'謴'
then
'gun'
when
@crs<=
'腂'
then
'guo'
when
@crs<=
'哈'
then
'ha'
when
@crs<=
'饚'
then
'hai'
when
@crs<=
'鶾'
then
'han'
when
@crs<=
'沆'
then
'hang'
when
@crs<=
'兞'
then
'hao'
when
@crs<=
'靏'
then
'he'
when
@crs<=
'嬒'
then
'hei'
when
@crs<=
'恨'
then
'hen'
when
@crs<=
'堼'
then
'heng'
when
@crs<=
'鬨'
then
'hong'
when
@crs<=
'鱟'
then
'hou'
when
@crs<=
'鸌'
then
'hu'
when
@crs<=
'蘳'
then
'hua'
when
@crs<=
'蘾'
then
'huai'
when
@crs<=
'鰀'
then
'huan'
when
@crs<=
'鎤'
then
'huang'
when
@crs<=
'顪'
then
'hui'
when
@crs<=
'諢'
then
'hun'
when
@crs<=
'夻'
then
'huo'
when
@crs<=
'驥'
then
'ji'
when
@crs<=
'嗧'
then
'jia'
when
@crs<=
'鑳'
then
'jian'
when
@crs<=
'謽'
then
'jiang'
when
@crs<=
'釂'
then
'jiao'
when
@crs<=
'繲'
then
'jie'
when
@crs<=
'齽'
then
'jin'
when
@crs<=
'竸'
then
'jing'
when
@crs<=
'蘔'
then
'jiong'
when
@crs<=
'欍'
then
'jiu'
when
@crs<=
'爠'
then
'ju'
when
@crs<=
'羂'
then
'juan'
when
@crs<=
'钁'
then
'jue'
when
@crs<=
'攈'
then
'jun'
when
@crs<=
'鉲'
then
'ka'
when
@crs<=
'乫'
then
'kai'
when
@crs<=
'矙'
then
'kan'
when
@crs<=
'閌'
then
'kang'
when
@crs<=
'鯌'
then
'kao'
when
@crs<=
'騍'
then
'ke'
when
@crs<=
'褃'
then
'ken'
when
@crs<=
'鏗'
then
'keng'
when
@crs<=
'廤'
then
'kong'
when
@crs<=
'鷇'
then
'kou'
when
@crs<=
'嚳'
then
'ku'
when
@crs<=
'骻'
then
'kua'
when
@crs<=
'鱠'
then
'kuai'
when
@crs<=
'窾'
then
'kuan'
when
@crs<=
'鑛'
then
'kuang'
when
@crs<=
'鑎'
then
'kui'
when
@crs<=
'睏'
then
'kun'
when
@crs<=
'穒'
then
'kuo'
when
@crs<=
'鞡'
then
'la'
when
@crs<=
'籟'
then
'lai'
when
@crs<=
'糷'
then
'lan'
when
@crs<=
'唥'
then
'lang'
when
@crs<=
'軂'
then
'lao'
when
@crs<=
'餎'
then
'le'
when
@crs<=
'脷'
then
'lei'
when
@crs<=
'睖'
then
'leng'
when
@crs<=
'瓈'
then
'li'
when
@crs<=
'倆'
then
'lia'
when
@crs<=
'纞'
then
'lian'
when
@crs<=
'鍄'
then
'liang'
when
@crs<=
'瞭'
then
'liao'
when
@crs<=
'鱲'
then
'lie'
when
@crs<=
'轥'
then
'lin'
when
@crs<=
'炩'
then
'ling'
when
@crs<=
'咯'
then
'liu'
when
@crs<=
'贚'
then
'long'
when
@crs<=
'鏤'
then
'lou'
when
@crs<=
'氇'
then
'lu'
when
@crs<=
'鑢'
then
'lv'
when
@crs<=
'亂'
then
'luan'
when
@crs<=
'擽'
then
'lue'
when
@crs<=
'論'
then
'lun'
when
@crs<=
'鱳'
then
'luo'
when
@crs<=
'嘛'
then
'ma'
when
@crs<=
'霢'
then
'mai'
when
@crs<=
'蘰'
then
'man'
when
@crs<=
'蠎'
then
'mang'
when
@crs<=
'唜'
then
'mao'
when
@crs<=
'癦'
then
'me'
when
@crs<=
'嚜'
then
'mei'
when
@crs<=
'們'
then
'men'
when
@crs<=
'霥'
then
'meng'
when
@crs<=
'羃'
then
'mi'
when
@crs<=
'麵'
then
'mian'
when
@crs<=
'廟'
then
'miao'
when
@crs<=
'鱴'
then
'mie'
when
@crs<=
'鰵'
then
'min'
when
@crs<=
'詺'
then
'ming'
when
@crs<=
'謬'
then
'miu'
when
@crs<=
'耱'
then
'mo'
when
@crs<=
'麰'
then
'mou'
when
@crs<=
'旀'
then
'mu'
when
@crs<=
'魶'
then
'na'
when
@crs<=
'錼'
then
'nai'
when
@crs<=
'婻'
then
'nan'
when
@crs<=
'齉'
then
'nang'
when
@crs<=
'臑'
then
'nao'
when
@crs<=
'呢'
then
'ne'
when
@crs<=
'焾'
then
'nei'
when
@crs<=
'嫩'
then
'nen'
when
@crs<=
'能'
then
'neng'
when
@crs<=
'嬺'
then
'ni'
when
@crs<=
'艌'
then
'nian'
when
@crs<=
'釀'
then
'niang'
when
@crs<=
'脲'
then
'niao'
when
@crs<=
'钀'
then
'nie'
when
@crs<=
'拰'
then
'nin'
when
@crs<=
'濘'
then
'ning'
when
@crs<=
'靵'
then
'niu'
when
@crs<=
'齈'
then
'nong'
when
@crs<=
'譳'
then
'nou'
when
@crs<=
'搙'
then
'nu'
when
@crs<=
'衄'
then
'nv'
when
@crs<=
'瘧'
then
'nue'
when
@crs<=
'燶'
then
'nuan'
when
@crs<=
'桛'
then
'nuo'
when
@crs<=
'鞰'
then
'o'
when
@crs<=
'漚'
then
'ou'
when
@crs<=
'袙'
then
'pa'
when
@crs<=
'磗'
then
'pai'
when
@crs<=
'鑻'
then
'pan'
when
@crs<=
'胖'
then
'pang'
when
@crs<=
'礮'
then
'pao'
when
@crs<=
'轡'
then
'pei'
when
@crs<=
'喯'
then
'pen'
when
@crs<=
'喸'
then
'peng'
when
@crs<=
'鸊'
then
'pi'
when
@crs<=
'騙'
then
'pian'
when
@crs<=
'慓'
then
'piao'
when
@crs<=
'嫳'
then
'pie'
when
@crs<=
'聘'
then
'pin'
when
@crs<=
'蘋'
then
'ping'
when
@crs<=
'魄'
then
'po'
when
@crs<=
'哛'
then
'pou'
when
@crs<=
'曝'
then
'pu'
when
@crs<=
'蟿'
then
'qi'
when
@crs<=
'髂'
then
'qia'
when
@crs<=
'縴'
then
'qian'
when
@crs<=
'瓩'
then
'qiang'
when
@crs<=
'躈'
then
'qiao'
when
@crs<=
'籡'
then
'qie'
when
@crs<=
'藽'
then
'qin'
when
@crs<=
'櫦'
then
'qing'
when
@crs<=
'瓗'
then
'qiong'
when
@crs<=
'糗'
then
'qiu'
when
@crs<=
'覻'
then
'qu'
when
@crs<=
'勸'
then
'quan'
when
@crs<=
'礭'
then
'que'
when
@crs<=
'囕'
then
'qun'
when
@crs<=
'橪'
then
'ran'
when
@crs<=
'讓'
then
'rang'
when
@crs<=
'繞'
then
'rao'
when
@crs<=
'熱'
then
're'
when
@crs<=
'餁'
then
'ren'
when
@crs<=
'陾'
then
'reng'
when
@crs<=
'馹'
then
'ri'
when
@crs<=
'穃'
then
'rong'
when
@crs<=
'嶿'
then
'rou'
when
@crs<=
'擩'
then
'ru'
when
@crs<=
'礝'
then
'ruan'
when
@crs<=
'壡'
then
'rui'
when
@crs<=
'橍'
then
'run'
when
@crs<=
'鶸'
then
'ruo'
when
@crs<=
'栍'
then
'sa'
when
@crs<=
'虄'
then
'sai'
when
@crs<=
'閐'
then
'san'
when
@crs<=
'喪'
then
'sang'
when
@crs<=
'髞'
then
'sao'
when
@crs<=
'飋'
then
'se'
when
@crs<=
'篸'
then
'sen'
when
@crs<=
'縇'
then
'seng'
when
@crs<=
'霎'
then
'sha'
when
@crs<=
'曬'
then
'shai'
when
@crs<=
'鱔'
then
'shan'
when
@crs<=
'緔'
then
'shang'
when
@crs<=
'潲'
then
'shao'
when
@crs<=
'欇'
then
'she'
when
@crs<=
'瘮'
then
'shen'
when
@crs<=
'賸'
then
'sheng'
when
@crs<=
'瓧'
then
'shi'
when
@crs<=
'鏉'
then
'shou'
when
@crs<=
'虪'
then
'shu'
when
@crs<=
'誜'
then
'shua'
when
@crs<=
'卛'
then
'shuai'
when
@crs<=
'腨'
then
'shuan'
when
@crs<=
'灀'
then
'shuang'
when
@crs<=
'睡'
then
'shui'
when
@crs<=
'鬊'
then
'shun'
when
@crs<=
'鑠'
then
'shuo'
when
@crs<=
'乺'
then
'si'
when
@crs<=
'鎹'
then
'song'
when
@crs<=
'瘶'
then
'sou'
when
@crs<=
'鷫'
then
'su'
when
@crs<=
'算'
then
'suan'
when
@crs<=
'鐩'
then
'sui'
when
@crs<=
'潠'
then
'sun'
when
@crs<=
'蜶'
then
'suo'
when
@crs<=
'襨'
then
'ta'
when
@crs<=
'燤'
then
'tai'
when
@crs<=
'賧'
then
'tan'
when
@crs<=
'燙'
then
'tang'
when
@crs<=
'畓'
then
'tao'
when
@crs<=
'蟘'
then
'te'
when
@crs<=
'朰'
then
'teng'
when
@crs<=
'趯'
then
'ti'
when
@crs<=
'舚'
then
'tian'
when
@crs<=
'糶'
then
'tiao'
when
@crs<=
'餮'
then
'tie'
when
@crs<=
'乭'
then
'ting'
when
@crs<=
'憅'
then
'tong'
when
@crs<=
'透'
then
'tou'
when
@crs<=
'鵵'
then
'tu'
when
@crs<=
'褖'
then
'tuan'
when
@crs<=
'駾'
then
'tui'
when
@crs<=
'坉'
then
'tun'
when
@crs<=
'籜'
then
'tuo'
when
@crs<=
'韤'
then
'wa'
when
@crs<=
'顡'
then
'wai'
when
@crs<=
'贎'
then
'wan'
when
@crs<=
'朢'
then
'wang'
when
@crs<=
'躛'
then
'wei'
when
@crs<=
'璺'
then
'wen'
when
@crs<=
'齆'
then
'weng'
when
@crs<=
'齷'
then
'wo'
when
@crs<=
'鶩'
then
'wu'
when
@crs<=
'衋'
then
'xi'
when
@crs<=
'鏬'
then
'xia'
when
@crs<=
'鼸'
then
'xian'
when
@crs<=
'鱌'
then
'xiang'
when
@crs<=
'斆'
then
'xiao'
when
@crs<=
'躞'
then
'xie'
when
@crs<=
'釁'
then
'xin'
when
@crs<=
'臖'
then
'xing'
when
@crs<=
'敻'
then
'xiong'
when
@crs<=
'齅'
then
'xiu'
when
@crs<=
'蓿'
then
'xu'
when
@crs<=
'贙'
then
'xuan'
when
@crs<=
'瀥'
then
'xue'
when
@crs<=
'鑂'
then
'xun'
when
@crs<=
'齾'
then
'ya'
when
@crs<=
'灩'
then
'yan'
when
@crs<=
'樣'
then
'yang'
when
@crs<=
'鑰'
then
'yao'
when
@crs<=
'岃'
then
'ye'
when
@crs<=
'齸'
then
'yi'
when
@crs<=
'檼'
then
'yin'
when
@crs<=
'譍'
then
'ying'
when
@crs<=
'喲'
then
'yo'
when
@crs<=
'醟'
then
'yong'
when
@crs<=
'鼬'
then
'you'
when
@crs<=
'爩'
then
'yu'
when
@crs<=
'願'
then
'yuan'
when
@crs<=
'鸙'
then
'yue'
when
@crs<=
'韻'
then
'yun'
when
@crs<=
'雥'
then
'za'
when
@crs<=
'縡'
then
'zai'
when
@crs<=
'饡'
then
'zan'
when
@crs<=
'臟'
then
'zang'
when
@crs<=
'竈'
then
'zao'
when
@crs<=
'稄'
then
'ze'
when
@crs<=
'鱡'
then
'zei'
when
@crs<=
'囎'
then
'zen'
when
@crs<=
'贈'
then
'zeng'
when
@crs<=
'醡'
then
'zha'
when
@crs<=
'瘵'
then
'zhai'
when
@crs<=
'驏'
then
'zhan'
when
@crs<=
'瞕'
then
'zhang'
when
@crs<=
'羄'
then
'zhao'
when
@crs<=
'鷓'
then
'zhe'
when
@crs<=
'黮'
then
'zhen'
when
@crs<=
'證'
then
'zheng'
when
@crs<=
'豒'
then
'zhi'
when
@crs<=
'諥'
then
'zhong'
when
@crs<=
'驟'
then
'zhou'
when
@crs<=
'鑄'
then
'zhu'
when
@crs<=
'爪'
then
'zhua'
when
@crs<=
'跩'
then
'zhuai'
when
@crs<=
'籑'
then
'zhuan'
when
@crs<=
'戅'
then
'zhuang'
when
@crs<=
'鑆'
then
'zhui'
when
@crs<=
'稕'
then
'zhun'
when
@crs<=
'籱'
then
'zhuo'
when
@crs<=
'漬'
then
'zi'
when
@crs<=
'縱'
then
'zong'
when
@crs<=
'媰'
then
'zou'
when
@crs<=
'謯'
then
'zu'
when
@crs<=
'攥'
then
'zuan'
when
@crs<=
'欈'
then
'zui'
when
@crs<=
'銌'
then
'zun'
when
@crs<=
'咗'
then
'zuo'
else
@crs
end
+
''
+@re,@strlen=@strlen-1
end
return
(@re)
end
go