学而实习之 不亦乐乎

SqlServer 获取汉语拼音首字母

2023-11-08 22:34:23

通过编写函数来实现,代码如下:

CREATE function [dbo].[uf_GetPY](@str nvarchar(4000))
returns nvarchar(4000)
as
begin
    set @str=RTRIM(@str)
    declare @word nchar(1),@PY nvarchar(4000)
    set @PY=''
    while len(@str)>0
    begin
        --处理常用多音字
        if len(@str)>=2
        begin
            if left(@str,2)='重庆'
            begin
               set @PY=@PY+'CQ'
               if LEN(@str)>2 
               set @str=right(@str,len(@str)-2)
               else
               set @str=''
            end
            if left(@str,2)='西藏'
            begin
               set @PY=@PY+'XZ'
               if LEN(@str)>2 
               set @str=right(@str,len(@str)-2)
               else
               set @str=''
            end
            if left(@str,2)='藏族'
            begin
               set @PY=@PY+'ZZ'
               if LEN(@str)>2 
               set @str=right(@str,len(@str)-2)
               else
               set @str=''
            end
        end       
        --汉字返回拼音首字母       
        if 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
    end
    return @PY
end
GO

函数调用实例:

select dbo.fun_getPY('中华人民共和国')

结果输出:ZHRMGHG

SQL中有许多功能强大的函数,下面为您介绍sql中汉字转换为拼音的函数,供您参考,希望能够对您有所帮助。

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