首页 > 数据库技术 > 详细

SQL Server 字段提取拼音首字母

时间:2015-07-13 18:03:12      阅读:116      评论:0      收藏:0      [点我收藏+]

目前工作中遇到一个情况,需要将SQL Server中的一个字段提取拼音的首字母,字段由汉字、英文、数字以及“-”构成,百度了一堆,找到如下方法,记录一下,以备后用!

  首先建立一个函数  

--生成拼音首码  
  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(中文字段) AS 列别名
FROM        表名称

 

 感谢:Luckeryin

SQL Server 字段提取拼音首字母

原文:http://www.cnblogs.com/xs104/p/3100952.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!