A 阿杜 阿牛 阿翔
B Bjack
C 陈小春 成龙 陈百强 陈冠蒲 陈冠希 陈浩民 陈庆祥 陈升 陈司翰 陈晓东
陈奕迅 陈明章
D 杜德伟 迪克牛仔 邓建明 邓健泓
E
F 范逸臣 方力申 费玉清 房祖名 范宗沛
G 恭硕良 古巨基 古天乐 光良 郭富城 郭品超 郭伟亮
H 黄品源 黄贯中 黄国俊 黄维得 黄耀明 黄义达 黄立行 黄家强
I
J 姜育恒
K 孔令奇
L 刘德华 罗文 李克勤 李圣杰 李宗盛 梁朝伟 梁汉文 林海峰 林俊杰 林佑威
林志炫 林志颖 林子良 林子祥
M 马俊伟
- 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('中华人民共和国')
得到所有A开头的.
select id_,dbo.fun_getPY(tit) from tab where dbo.fun_getPY(tit) like 'A%' order by dbo.fun_getPY(tit)
B开头的类似:
select id_,dbo.fun_getPY(tit) from tab where dbo.fun_getPY(tit) like 'B%' order by dbo.fun_getPY(tit)