SQL Server 字段提取拼音首字母

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

时间: 2024-10-09 23:04:31

SQL Server 字段提取拼音首字母的相关文章

sql server 汉字转拼音首字母

create function fun_getPY ( @str nvarchar(4000) ) returns nvarchar(4000) as begin declare @word nchar(1),@PY nvarchar(4000) set @PY='' while len(@str)>0 begin set @word=left(@str,1) --如果非汉字字符,返回原字符 set @[email protected]+(case when unicode(@word) bet

mysql中文字段转拼音首字母,以及中文拼音模糊查询

创建存储过程,将中文字段转拼音首字母 CREATE DEFINER=`root`@`%` FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 BEGIN DECLARE V_RETURN VARCHAR(255); SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME USING gbk),1)),16,10), 0xB0A1,0xB

sql获取汉字的拼音首字母

if exists (select * from sysobjects where id = object_id(N'[fn_ChineseToSpell]') and xtype in (N'FN', N'IF', N'TF')) www.2cto.com drop function [fn_ChineseToSpell]GO/*创建取拼音首字母函数*/ create function [dbo].[fn_ChineseToSpell](@strChinese varchar(500)='')

算法笔记_232:提取拼音首字母(Java)

目录 1 问题描述 2 解决方案   1 问题描述 在很多软件中,输入拼音的首写字母就可以快速定位到某个词条.比如,在铁路售票软件中,输入: "bj"就可以定位到"北京".怎样在自己的软件中实现这个功能呢?问题的关键在于:对每个汉字必须能计算出它的拼音首字母. GB2312汉字编码方式中,一级汉字的3755个是按照拼音顺序排列的.我们可以利用这个特征,对常用汉字求拼音首字母. GB2312编码方案对每个汉字采用两个字节表示.第一个字节为区号,第二个字节为区中的偏移号

sql语句 汉字转拼音首字母

create function GetPY(@str varchar(500))returns varchar(500)asbegin declare @cyc int,@length int,@str1 varchar(100),@charcate varbinary(20) set @cyc=1--从第几个字开始取 set @length=len(@str)--输入汉字的长度 set @str1=''--用于存放返回值 while @cyc<=1 begin select @charcate

sql语句按照汉字拼音首字母排序

oracle : 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值SCHINESE_RADICAL_M 按照部首(第一顺序).笔划(第二顺序)排序SCHINESE_STROKE_M 按照笔划(第一顺序).部首(第二顺序)排序SCHINESE_PINYIN_M 按照拼音排序,系统的默认排序方式为拼音排序 举例如下:表名为 dept ,其中name字段是中文,下面分别实现按照单位名称的笔划.部首和拼音排序.//按照笔划排序select * from dept order

sql中如何按某字段值的首字母分组?

sql中如何按某字段值的首字母分组?如一字段有值: x001 x003 p005 y0093 分组结果应为.X=2,p=1,y=1 ------解决方案--------------------如一字段有值: x001 x003 p005 y0093 分组结果应为.X=2,p=1,y=1 select left(col,1) , count(*) from tb group by left(col,1)

excel提取单元格汉字拼音首字母

Option ExplicitFunction PY(TT As String) As Variant '自定义函数,目的:把一组汉字变为一组汉字拼音的第一个字母.Dim i%, temp$    PY = ""    For i = 1 To Len(TT)         temp = Asc(Mid$(TT, i, 1))         If temp > 255 Or temp < 0 Then   '是汉字吗?             PY = PY &

C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母

代码参考该文http://www.cnblogs.com/yazdao/archive/2011/06/04/2072488.html VS2015版本 1.使用Nuget 安装 "SimplifiedChinesePinYinConversion" 2.代码: using Microsoft.International.Converters.PinYinConverter; using System; using System.Collections.Generic; using S