Home  >  Article  >  Database  >  SQL Server 字段提取拼音首字母

SQL Server 字段提取拼音首字母

WBOY
WBOYOriginal
2016-06-07 15:08:301336browse

目前工作中遇到一个情况,需要将SQL Server中的一个 字段 提取 拼音 的首 字母 , 字段 由汉字、英文、数字以及-构成,百度了一堆,找到如下方法,记录一下,以备后用! 首先建立一个函数 -- 生成 拼音 首码 CREATE function fn_GetPy( @str nvarchar ( 4000

目前工作中遇到一个情况,需要将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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn