Welcome

首页 / 数据库 / SQLServer / 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