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

 

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

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 阅读(162) 评论(0)  编辑 收藏 引用


标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)
 
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
 
相关链接: