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) >= 'r' 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

相关推荐