杨的空间
业精于勤,荒于嬉,行成于思,毁于随

 

--取得字符串每个汉字的拼音首字母

create function f_GetPy(@str nvarchar(4000))

returns nvarchar(4000)

as

begin

declare @strlen int,@re nvarchar(4000)

declare @t table(chr nchar(1) collate Chinese_PRC_CI_AS,letter nchar(1))

insert into @t(chr,letter)

select '','A' union all select '','B' union all

select '','C' union all select '','D' union all

select '','E' union all select '','F' union all

select '','G' union all select '','H' union all

select '','J' union all select '','K' union all

select '','L' union all select '','M' union all

select '','N' union all select '','O' union all

select '','P' union all select '','Q' union all

select '','R' union all select '','S' union all

select '','T' union all select '','W' union all

select '','X' union all select '','Y' union all

select '','Z'

select @strlen=len(@str),@re=''

while @strlen>0

begin

select top 1 @re=letter+@re,@strlen=@strlen-1

from @t a where chr<=substring(@str,@strlen,1)

order by chr desc

if @@rowcount=0

select @re=substring(@str,@strlen,1)+@re,@strlen=@strlen-1

end

return(@re)

end

go


--调用

select dbo.f_GetPy('中国')
--结果:ZG


--取得字符串第一个汉字的拼音首字母
create function f_GetFirstPy(@str nvarchar(1))

returns nvarchar(1)

as

begin

declare @strlen int,@re nvarchar(1)

declare @t table(chr nchar(1) collate Chinese_PRC_CI_AS,letter nchar(1))

insert into @t(chr,letter)

select '','A' union all select '','B' union all

select '','C' union all select '','D' union all

select '','E' union all select '','F' union all

select '','G' union all select '','H' union all

select '','J' union all select '','K' union all

select '','L' union all select '','M' union all

select '','N' union all select '','O' union all

select '','P' union all select '','Q' union all

select '','R' union all select '','S' union all

select '','T' union all select '','W' union all

select '','X' union all select '','Y' union all

select '','Z'

select @strlen=len(@str),@re=''

while @strlen>0

begin

select top 1 @re=letter+@re,@strlen=@strlen-1

from @t a where chr<=substring(@str,@strlen,1)

order by chr desc

if @@rowcount=0

select @re=substring(@str,@strlen,1)+@re,@strlen=@strlen-1

end

return(@re)

end

go

--调用

select dbo.f_GetFirstPy('中国')
--结果:Z
posted on 2007-11-24 13:58 阅读(415) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。