sql server自动生成拼音首字母的函数


  本文标签:自动生成,拼音首字母

建立一个查询,执行下面的语句生成函数fn_GetPy
复制代码 代码如下:

--生成拼音首码
CREATE function fn_GetPy(@str nvarchar(4000))
returns nvarchar(4000)
--WITH ENCRYPTION
as
begin
declare @intLen int
declare @strRet nvarchar(4000)
declare @temp nvarchar(100)
set @intLen = len(@str)
set @strRet =
while @intLen > 0
begin
set @temp =
select @temp = case
when substring(@str,@intLen,1) >= 帀 then Z
when substring(@str,@intLen,1) >= 丫 then Y
when substring(@str,@intLen,1) >= 夕 then X
when substring(@str,@intLen,1) >= 屲 then W
when substring(@str,@intLen,1) >= 他 then T
when substring(@str,@intLen,1) >= 仨 then S
when substring(@str,@intLen,1) >= 呥 then R
when substring(@str,@intLen,1) >= 七 then Q
when substring(@str,@intLen,1) >= 妑 then P
when substring(@str,@intLen,1) >= 噢 then O
when substring(@str,@intLen,1) >= 拏 then N
when substring(@str,@intLen,1) >= 嘸 then M
when substring(@str,@intLen,1) >= 垃 then L
when substring(@str,@intLen,1) >= 咔 then K
when substring(@str,@intLen,1) >= 丌 then J
when substring(@str,@intLen,1) >= 铪 then H
when substring(@str,@intLen,1) >= 旮 then G
when substring(@str,@intLen,1) >= 发 then F
when substring(@str,@intLen,1) >= 妸 then E
when substring(@str,@intLen,1) >= 咑 then D
when substring(@str,@intLen,1) >= 嚓 then C
when substring(@str,@intLen,1) >= 八 then B
when substring(@str,@intLen,1) >= 吖 then A
else rtrim(ltrim(substring(@str,@intLen,1)))
end
--对于汉字特殊字符,不生成拼音码
if (ascii(@temp)>127) set @temp =
--对于英文中小括号,不生成拼音码
if @temp = ( or @temp = ) set @temp =
select @strRet = @temp + @strRet
set @intLen = @intLen - 1
end
return lower(@strRet)
end

 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。

测试:
SELECT Product_ID , dbo.fn_GetPy(Product_Name) AS pymc
FROM dbo.T_Product