SQL中定义函数,将汉字转成拼音简写

我们在写程序中,经常会用到SQL中将某个名字转成拼音,然后保存在数据库中某个字段中,方便快捷查询,所以有必要写SQL函数来定义一下,话补多说,直接上代码:

  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 dbo.fn_GetPy('张三丰') py

结果如下:

py

zsf

 

你可能感兴趣的:(sql)