热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

SQLServer字段提取拼音首字母-mysql教程

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

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

推荐阅读
author-avatar
电信他爹_186
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有