当前位置: 代码迷 >> 综合 >> sqlserver 汉字 转 字母
  详细解决方案

sqlserver 汉字 转 字母

热度:39   发布时间:2024-02-22 00:15:21.0

代码是别人的,忘记出处了。

ALTER FUNCTION [dbo].[ufn_GetSpellCode](@Str   varchar(500)='')  
  returns   varchar(500)  
  as 
 
  begin  
      --定义变量
      declare   @strlen   int, @return   varchar(500), @ii   int  
      declare   @n   int, @c   char(1),@chn   nchar(1)  
       --设置初始值
      select   @strlen=len(@str),@return='',@ii=0  
      set   @ii=0  
      --开始循环取出没个字符
      while   @ii<@strlen  
      begin  
          select   @ii=@ii+1,@n=63,@chn=substring(@str,@ii,1)  
          if   @chn>'z'  
          select   @n   =   @n   +1  ,@c   =   case   chn   when   @chn   then   char(@n)   else   @c   end  
          from(  
              select   top   27   *  
              from(  
                  select   chn   =   '吖'  
                  union   all   select   '八'  
                  union   all   select   '嚓'  
                  union   all   select   '咑'  
                  union   all   select   '妸'  
                   union   all   select   '发'  
                   union   all   select   '旮'  
                   union   all   select   '铪'  
                   union   all   select   '丌' --because   have   no   'i'  
                   union   all   select   '丌'  
                   union   all   select   '咔'  
                   union   all   select   '垃'  
                   union   all   select   '嘸'  
                   union   all   select   '拏'  
                   union   all   select   '噢'  
                   union   all   select   '妑'  
                   union   all   select   '七'  
                   union   all   select   '呥'  
                   union   all   select   '仨'  
                   union   all   select   '他'  
                   union   all   select   '屲' --no   'u'  
                   union   all   select   '屲' --no   'v'  
                   union   all   select   '屲'  
                   union   all   select   '夕'  
                   union   all   select   '丫'  
                   union   all   select   '帀'  
                   union   all   select   @chn
               )   as   a  
               order   by   chn   COLLATE   Chinese_PRC_CI_AS    
           )   as   b  
           else   set   @c=@chn  
           set   @return=@return+@c  
       end  
       return(@return)  
   end  

 

  相关解决方案