sql函数:汉字转换为拼音

sql数据库
自定义一个函数
把下面代码写进去

功能是得到汉字拼音首字母
create function fun_getPY(@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

--函数调用实例:
select dbo.fun_getPY('中华人民共和国')
结果都为:ZHRMGHG

 

/* -------------------------------------------------------------
函数: fn_GetPinyin
描述: 汉字转拼音(无数据表版)
使用: dbo.fn_GetPinyin('中华人民共和国') = zhonghuarenmingongheguo
作者: 流香羽 (改编:Tony)
博客: http://hi.baidu.com/流香羽
------------------------------------------------------------- */ 
   
IF OBJECT_ID( '[fn_GetPinyin]' ) IS  NOT  NULL 
  DROP  FUNCTION  [fn_GetPinyin]  
GO 
create  function  [dbo].[fn_GetPinyin](@words nvarchar(2000)) 
returns  varchar (8000) 
as 
begin 
declare  @word nchar (1) 
declare  @pinyin varchar (8000) 
declare  @i int 
declare  @words_len int 
declare  @unicode int 
set  @i = 1 
set  @words = ltrim(rtrim(@words)) 
set  @words_len = len(@words) 
while (@i <= @words_len) --循环取字符 
begin 
set  @word = substring (@words, @i, 1) 
set  @unicode = unicode(@word) 
set  @pinyin = ISNULL (@pinyin + SPACE (1), '' )+  
( 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  'ai' ,N '靉' 
union  all  select  'an' ,N '黯' 
union  all  select  'ang' ,N '醠' 
union  all  select  'ao' ,N '驁' 
union  all  select  'ba' ,N '欛' 
union  all  select  'bai' ,N '瓸'  --韛兡瓸 
union  all  select  'ban' ,N '瓣' 
union  all  select  'bang' ,N '鎊' 
union  all  select  'bao' ,N '鑤' 
union  all  select  'bei' ,N '鐾' 
union  all  select  'ben' ,N '輽' 
union  all  select  'beng' ,N '鏰' 
union  all  select  'bi' ,N '鼊' 
union  all  select  'bian' ,N '變' 
union  all  select  'biao' ,N '鰾' 
union  all  select  'bie' ,N '彆' 
union  all  select  'bin' ,N '鬢' 
union  all  select  'bing' ,N '靐' 
union  all  select  'bo' ,N '蔔' 
union  all  select  'bu' ,N '簿' 
union  all  select  'ca' ,N '囃' 
union  all  select  'cai' ,N '乲'  --縩乲 
union  all  select  'can' ,N '爘' 
union  all  select  'cang' ,N '賶' 
union  all  select  'cao' ,N '鼜' 
union  all  select  'ce' ,N '簎' 
union  all  select  'cen' ,N '笒' 
union  all  select  'ceng' ,N '乽'  --硛硳岾猠乽 
union  all  select  'cha' ,N '詫' 
union  all  select  'chai' ,N '囆' 
union  all  select  'chan' ,N '顫' 
union  all  select  'chang' ,N '韔' 
union  all  select  'chao' ,N '觘' 
union  all  select  'che' ,N '爡' 
union  all  select  'chen' ,N '讖' 
union  all  select  'cheng' ,N '秤' 
union  all  select  'chi' ,N '鷘' 
union  all  select  'chong' ,N '銃' 
union  all  select  'chou' ,N '殠' 
union  all  select  'chu' ,N '矗' 
union  all  select  'chuai' ,N '踹' 
union  all  select  'chuan' ,N '鶨' 
union  all  select  'chuang' ,N '愴' 
union  all  select  'chui' ,N '顀' 
union  all  select  'chun' ,N '蠢' 
union  all  select  'chuo' ,N '縒' 
union  all  select  'ci' ,N '嗭'  --賜嗭 
union  all  select  'cong' ,N '謥' 
union  all  select  'cou' ,N '輳' 
union  all  select  'cu' ,N '顣' 
union  all  select  'cuan' ,N '爨' 
union  all  select  'cui' ,N '臎' 
union  all  select  'cun' ,N '籿' 
union  all  select  'cuo' ,N '錯' 
union  all  select  'da' ,N '橽' 
union  all  select  'dai' ,N '靆' 
union  all  select  'dan' ,N '饏' 
union  all  select  'dang' ,N '闣' 
union  all  select  'dao' ,N '纛' 
union  all  select  'de' ,N '的' 
union  all  select  'den' ,N '扽' 
union  all  select  'deng' ,N '鐙' 
union  all  select  'di' ,N '螮' 
union  all  select  'dia' ,N '嗲' 
union  all  select  'dian' ,N '驔' 
union  all  select  'diao' ,N '鑃' 
union  all  select  'die' ,N '嚸'  --眰嚸 
union  all  select  'ding' ,N '顁' 
union  all  select  'diu' ,N '銩' 
union  all  select  'dong' ,N '霘' 
union  all  select  'dou' ,N '鬭' 
union  all  select  'du' ,N '蠹' 
union  all  select  'duan' ,N '叾'  --籪叾 
union  all  select  'dui' ,N '譵' 
union  all  select  'dun' ,N '踲' 
union  all  select  'duo' ,N '鵽' 
union  all  select  'e' ,N '鱷' 
union  all  select  'en' ,N '摁' 
union  all  select  'eng' ,N '鞥' 
union  all  select  'er' ,N '樲' 
union  all  select  'fa' ,N '髮' 
union  all  select  'fan' ,N '瀪' 
union  all  select  'fang' ,N '放' 
union  all  select  'fei' ,N '靅' 
union  all  select  'fen' ,N '鱝' 
union  all  select  'feng' ,N '覅' 
union  all  select  'fo' ,N '梻' 
union  all  select  'fou' ,N '鴀' 
union  all  select  'fu' ,N '猤'  --鰒猤 
union  all  select  'ga' ,N '魀' 
union  all  select  'gai' ,N '瓂' 
union  all  select  'gan' ,N '灨' 
union  all  select  'gang' ,N '戇' 
union  all  select  'gao' ,N '鋯' 
union  all  select  'ge' ,N '獦' 
union  all  select  'gei' ,N '給' 
union  all  select  'gen' ,N '搄' 
union  all  select  'geng' ,N '堩'  --亙堩啹喼嗰 
union  all  select  'gong' ,N '兣'  --熕贑兝兣 
union  all  select  'gou' ,N '購' 
union  all  select  'gu' ,N '顧' 
union  all  select  'gua' ,N '詿' 
union  all  select  'guai' ,N '恠' 
union  all  select  'guan' ,N '鱹' 
union  all  select  'guang' ,N '撗' 
union  all  select  'gui' ,N '鱥' 
union  all  select  'gun' ,N '謴' 
union  all  select  'guo' ,N '腂' 
union  all  select  'ha' ,N '哈' 
union  all  select  'hai' ,N '饚' 
union  all  select  'han' ,N '鶾' 
union  all  select  'hang' ,N '沆' 
union  all  select  'hao' ,N '兞' 
union  all  select  'he' ,N '靏' 
union  all  select  'hei' ,N '嬒' 
union  all  select  'hen' ,N '恨' 
union  all  select  'heng' ,N '堼'  --堼囍 
union  all  select  'hong' ,N '鬨' 
union  all  select  'hou' ,N '鱟' 
union  all  select  'hu' ,N '鸌' 
union  all  select  'hua' ,N '蘳' 
union  all  select  'huai' ,N '蘾' 
union  all  select  'huan' ,N '鰀' 
union  all  select  'huang' ,N '鎤' 
union  all  select  'hui' ,N '顪' 
union  all  select  'hun' ,N '諢' 
union  all  select  'huo' ,N '夻' 
union  all  select  'ji' ,N '驥' 
union  all  select  'jia' ,N '嗧' 
union  all  select  'jian' ,N '鑳' 
union  all  select  'jiang' ,N '謽' 
union  all  select  'jiao' ,N '釂' 
union  all  select  'jie' ,N '繲' 
union  all  select  'jin' ,N '齽' 
union  all  select  'jing' ,N '竸' 
union  all  select  'jiong' ,N '蘔' 
union  all  select  'jiu' ,N '欍' 
union  all  select  'ju' ,N '爠' 
union  all  select  'juan' ,N '羂' 
union  all  select  'jue' ,N '钁' 
union  all  select  'jun' ,N '攈' 
union  all  select  'ka' ,N '鉲' 
union  all  select  'kai' ,N '乫'  --鎎乫 
union  all  select  'kan' ,N '矙' 
union  all  select  'kang' ,N '閌' 
union  all  select  'kao' ,N '鯌' 
union  all  select  'ke' ,N '騍' 
union  all  select  'ken' ,N '褃' 
union  all  select  'keng' ,N '鏗'  --巪乬唟厼怾 
union  all  select  'kong' ,N '廤' 
union  all  select  'kou' ,N '鷇' 
union  all  select  'ku' ,N '嚳' 
union  all  select  'kua' ,N '骻' 
union  all  select  'kuai' ,N '鱠' 
union  all  select  'kuan' ,N '窾' 
union  all  select  'kuang' ,N '鑛' 
union  all  select  'kui' ,N '鑎' 
union  all  select  'kun' ,N '睏' 
union  all  select  'kuo' ,N '穒' 
union  all  select  'la' ,N '鞡' 
union  all  select  'lai' ,N '籟' 
union  all  select  'lan' ,N '糷' 
union  all  select  'lang' ,N '唥' 
union  all  select  'lao' ,N '軂' 
union  all  select  'le' ,N '餎' 
union  all  select  'lei' ,N '脷'  --嘞脷 
union  all  select  'leng' ,N '睖' 
union  all  select  'li' ,N '瓈' 
union  all  select  'lia' ,N '倆' 
union  all  select  'lian' ,N '纞' 
union  all  select  'liang' ,N '鍄' 
union  all  select  'liao' ,N '瞭' 
union  all  select  'lie' ,N '鱲' 
union  all  select  'lin' ,N '轥'  --轥拎 
union  all  select  'ling' ,N '炩' 
union  all  select  'liu' ,N '咯'  --瓼甅囖咯 
union  all  select  'long' ,N '贚' 
union  all  select  'lou' ,N '鏤' 
union  all  select  'lu' ,N '氇' 
union  all  select  'lv' ,N '鑢' 
union  all  select  'luan' ,N '亂' 
union  all  select  'lue' ,N '擽' 
union  all  select  'lun' ,N '論' 
union  all  select  'luo' ,N '鱳' 
union  all  select  'ma' ,N '嘛' 
union  all  select  'mai' ,N '霢' 
union  all  select  'man' ,N '蘰' 
union  all  select  'mang' ,N '蠎' 
union  all  select  'mao' ,N '唜' 
union  all  select  'me' ,N '癦'  --癦呅 
union  all  select  'mei' ,N '嚜' 
union  all  select  'men' ,N '們' 
union  all  select  'meng' ,N '霥'  --霿踎 
union  all  select  'mi' ,N '羃' 
union  all  select  'mian' ,N '麵' 
union  all  select  'miao' ,N '廟' 
union  all  select  'mie' ,N '鱴'  --鱴瓱 
union  all  select  'min' ,N '鰵' 
union  all  select  'ming' ,N '詺' 
union  all  select  'miu' ,N '謬' 
union  all  select  'mo' ,N '耱'  --耱乮 
union  all  select  'mou' ,N '麰'  --麰蟱 
union  all  select  'mu' ,N '旀' 
union  all  select  'na' ,N '魶' 
union  all  select  'nai' ,N '錼' 
union  all  select  'nan' ,N '婻' 
union  all  select  'nang' ,N '齉' 
union  all  select  'nao' ,N '臑' 
union  all  select  'ne' ,N '呢' 
union  all  select  'nei' ,N '焾'  --嫩焾 
union  all  select  'nen' ,N '嫩' 
union  all  select  'neng' ,N '能'  --莻嗯鈪銰啱 
union  all  select  'ni' ,N '嬺' 
union  all  select  'nian' ,N '艌' 
union  all  select  'niang' ,N '釀' 
union  all  select  'niao' ,N '脲' 
union  all  select  'nie' ,N '钀' 
union  all  select  'nin' ,N '拰' 
union  all  select  'ning' ,N '濘' 
union  all  select  'niu' ,N '靵' 
union  all  select  'nong' ,N '齈' 
union  all  select  'nou' ,N '譳' 
union  all  select  'nu' ,N '搙' 
union  all  select  'nv' ,N '衄' 
union  all  select  'nue' ,N '瘧' 
union  all  select  'nuan' ,N '燶'  --硸黁燶郍 
union  all  select  'nuo' ,N '桛' 
union  all  select  'o' ,N '鞰'  --毮夞乯鞰 
union  all  select  'ou' ,N '漚' 
union  all  select  'pa' ,N '袙' 
union  all  select  'pai' ,N '磗'  --鎃磗 
union  all  select  'pan' ,N '鑻' 
union  all  select  'pang' ,N '胖' 
union  all  select  'pao' ,N '礮' 
union  all  select  'pei' ,N '轡' 
union  all  select  'pen' ,N '喯' 
union  all  select  'peng' ,N '喸'  --浌巼闏乶喸 
union  all  select  'pi' ,N '鸊' 
union  all  select  'pian' ,N '騙' 
union  all  select  'piao' ,N '慓' 
union  all  select  'pie' ,N '嫳' 
union  all  select  'pin' ,N '聘' 
union  all  select  'ping' ,N '蘋' 
union  all  select  'po' ,N '魄' 
union  all  select  'pou' ,N '哛'  --兺哛 
union  all  select  'pu' ,N '曝' 
union  all  select  'qi' ,N '蟿' 
union  all  select  'qia' ,N '髂' 
union  all  select  'qian' ,N '縴' 
union  all  select  'qiang' ,N '瓩'  --羻兛瓩 
union  all  select  'qiao' ,N '躈' 
union  all  select  'qie' ,N '籡' 
union  all  select  'qin' ,N '藽' 
union  all  select  'qing' ,N '櫦' 
union  all  select  'qiong' ,N '瓗' 
union  all  select  'qiu' ,N '糗' 
union  all  select  'qu' ,N '覻' 
union  all  select  'quan' ,N '勸' 
union  all  select  'que' ,N '礭' 
union  all  select  'qun' ,N '囕' 
union  all  select  'ran' ,N '橪' 
union  all  select  'rang' ,N '讓' 
union  all  select  'rao' ,N '繞' 
union  all  select  're' ,N '熱' 
union  all  select  'ren' ,N '餁' 
union  all  select  'reng' ,N '陾' 
union  all  select  'ri' ,N '馹' 
union  all  select  'rong' ,N '穃' 
union  all  select  'rou' ,N '嶿' 
union  all  select  'ru' ,N '擩' 
union  all  select  'ruan' ,N '礝' 
union  all  select  'rui' ,N '壡' 
union  all  select  'run' ,N '橍'  --橍挼 
union  all  select  'ruo' ,N '鶸' 
union  all  select  'sa' ,N '栍'  --櫒栍 
union  all  select  'sai' ,N '虄'  --簺虄 
union  all  select  'san' ,N '閐' 
union  all  select  'sang' ,N '喪' 
union  all  select  'sao' ,N '髞' 
union  all  select  'se' ,N '飋'  --裇聓 
union  all  select  'sen' ,N '篸' 
union  all  select  'seng' ,N '縇'  --閪縇 
union  all  select  'sha' ,N '霎' 
union  all  select  'shai' ,N '曬' 
union  all  select  'shan' ,N '鱔' 
union  all  select  'shang' ,N '緔' 
union  all  select  'shao' ,N '潲' 
union  all  select  'she' ,N '欇' 
union  all  select  'shen' ,N '瘮' 
union  all  select  'sheng' ,N '賸' 
union  all  select  'shi' ,N '瓧'  --鰘齛兙瓧 
union  all  select  'shou' ,N '鏉' 
union  all  select  'shu' ,N '虪' 
union  all  select  'shua' ,N '誜' 
union  all  select  'shuai' ,N '卛' 
union  all  select  'shuan' ,N '腨' 
union  all  select  'shuang' ,N '灀' 
union  all  select  'shui' ,N '睡' 
union  all  select  'shun' ,N '鬊' 
union  all  select  'shuo' ,N '鑠' 
union  all  select  'si' ,N '乺'  --瀃螦乺 
union  all  select  'song' ,N '鎹' 
union  all  select  'sou' ,N '瘶' 
union  all  select  'su' ,N '鷫' 
union  all  select  'suan' ,N '算' 
union  all  select  'sui' ,N '鐩' 
union  all  select  'sun' ,N '潠' 
union  all  select  'suo' ,N '蜶' 
union  all  select  'ta' ,N '襨'  --躢襨 
union  all  select  'tai' ,N '燤' 
union  all  select  'tan' ,N '賧' 
union  all  select  'tang' ,N '燙' 
union  all  select  'tao' ,N '畓'  --討畓 
union  all  select  'te' ,N '蟘' 
union  all  select  'teng' ,N '朰'  --霯唞朰 
union  all  select  'ti' ,N '趯' 
union  all  select  'tian' ,N '舚' 
union  all  select  'tiao' ,N '糶' 
union  all  select  'tie' ,N '餮' 
union  all  select  'ting' ,N '乭'  --濎乭 
union  all  select  'tong' ,N '憅' 
union  all  select  'tou' ,N '透' 
union  all  select  'tu' ,N '鵵' 
union  all  select  'tuan' ,N '褖' 
union  all  select  'tui' ,N '駾' 
union  all  select  'tun' ,N '坉' 
union  all  select  'tuo' ,N '籜' 
union  all  select  'wa' ,N '韤' 
union  all  select  'wai' ,N '顡' 
union  all  select  'wan' ,N '贎' 
union  all  select  'wang' ,N '朢' 
union  all  select  'wei' ,N '躛' 
union  all  select  'wen' ,N '璺' 
union  all  select  'weng' ,N '齆' 
union  all  select  'wo' ,N '齷' 
union  all  select  'wu' ,N '鶩' 
union  all  select  'xi' ,N '衋' 
union  all  select  'xia' ,N '鏬' 
union  all  select  'xian' ,N '鼸' 
union  all  select  'xiang' ,N '鱌' 
union  all  select  'xiao' ,N '斆' 
union  all  select  'xie' ,N '躞' 
union  all  select  'xin' ,N '釁' 
union  all  select  'xing' ,N '臖' 
union  all  select  'xiong' ,N '敻' 
union  all  select  'xiu' ,N '齅' 
union  all  select  'xu' ,N '蓿' 
union  all  select  'xuan' ,N '贙' 
union  all  select  'xue' ,N '瀥' 
union  all  select  'xun' ,N '鑂' 
union  all  select  'ya' ,N '齾' 
union  all  select  'yan' ,N '灩' 
union  all  select  'yang' ,N '樣' 
union  all  select  'yao' ,N '鑰' 
union  all  select  'ye' ,N '岃'  --鸈膶岃 
union  all  select  'yi' ,N '齸' 
union  all  select  'yin' ,N '檼' 
union  all  select  'ying' ,N '譍' 
union  all  select  'yo' ,N '喲' 
union  all  select  'yong' ,N '醟' 
union  all  select  'you' ,N '鼬' 
union  all  select  'yu' ,N '爩' 
union  all  select  'yuan' ,N '願' 
union  all  select  'yue' ,N '鸙' 
union  all  select  'yun' ,N '韻' 
union  all  select  'za' ,N '雥' 
union  all  select  'zai' ,N '縡' 
union  all  select  'zan' ,N '饡' 
union  all  select  'zang' ,N '臟' 
union  all  select  'zao' ,N '竈' 
union  all  select  'ze' ,N '稄' 
union  all  select  'zei' ,N '鱡' 
union  all  select  'zen' ,N '囎' 
union  all  select  'zeng' ,N '贈' 
union  all  select  'zha' ,N '醡' 
union  all  select  'zhai' ,N '瘵' 
union  all  select  'zhan' ,N '驏' 
union  all  select  'zhang' ,N '瞕' 
union  all  select  'zhao' ,N '羄' 
union  all  select  'zhe' ,N '鷓' 
union  all  select  'zhen' ,N '黮' 
union  all  select  'zheng' ,N '證' 
union  all  select  'zhi' ,N '豒' 
union  all  select  'zhong' ,N '諥' 
union  all  select  'zhou' ,N '驟' 
union  all  select  'zhu' ,N '鑄' 
union  all  select  'zhua' ,N '爪' 
union  all  select  'zhuai' ,N '跩' 
union  all  select  'zhuan' ,N '籑' 
union  all  select  'zhuang' ,N '戅' 
union  all  select  'zhui' ,N '鑆' 
union  all  select  'zhun' ,N '稕' 
union  all  select  'zhuo' ,N '籱' 
union  all  select  'zi' ,N '漬'  --漬唨 
union  all  select  'zong' ,N '縱' 
union  all  select  'zou' ,N '媰' 
union  all  select  'zu' ,N '謯' 
union  all  select  'zuan' ,N '攥' 
union  all  select  'zui' ,N '欈' 
union  all  select  'zun' ,N '銌' 
union  all  select  'zuo' ,N '咗' ) t  
where  word >= @word collate  Chinese_PRC_CS_AS_KS_WS  
order  by  word collate  Chinese_PRC_CS_AS_KS_WS ASC ) else  @word end
set  @i = @i + 1 
end 
return  @pinyin 
END 
GO 
   
SELECT  dbo.fn_GetPinyin( '中华人民共和国' )  
   
/*
  
-------------------------------------------
zuo zhong hua ren min gong he guo
  
(1 行受影响)
*/ 

转载于:https://www.cnblogs.com/b400800/p/4062498.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值