Chinaunix首页 | 论坛 | 博客
  • 博客访问: 515082
  • 博文数量: 106
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 1380
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-21 09:35
文章分类

全部博文(106)

文章存档

2010年(3)

2009年(14)

2008年(55)

2007年(34)

我的朋友

分类: 数据库开发技术

2008-10-08 13:27:56

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
create function [dbo].[fun_GetPinYin]
(
    @str nvarchar(4000)
)
returns nvarchar(4000)
as
begin
declare @word nchar(1),@PinYin nvarchar(4000)
set @PinYin=''
while len(@str)>0
begin
    set @word=left(@str,1)
    --如果非汉字字符,返回原字符
    set @PinYin=@PinYin+(case when unicode(@word) between 19968 and 19968+20901
               then (
                            select top 1 PinYin
                            from
                            (
                             select 'a' as PinYin,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 PinYin ASC
                          )
                      else @word
                 end)
    set @str=right(@str,len(@str)-1)
end
return @PinYin
end
 
调用:
declare @str varchar(4000)
set @str='微软公司'
select dbo.fun_GetPinYin(@str)
阅读(931) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~