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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM