SQL将用户表中已存在的数据所有姓名(汉字)转换为拼音首字母

Posted 简单就好。。。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL将用户表中已存在的数据所有姓名(汉字)转换为拼音首字母相关的知识,希望对你有一定的参考价值。

实现方法:

--函数

Create function [dbo].[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

--执行语句

declare @id int;
declare @UserName varchar(100);
declare @cursor cursor;--游标
set @cursor=cursor for
select id,UserName from T_user;
open @cursor
fetch next from @cursor into @id,@UserName;
while @@FETCH_STATUS=0
begin
begin
update T_user set UserName=(SELECT [dbo].[fn_GetPy](@UserName)) where id=@id
end
fetch next from @cursor into @id,@UserName;
end
close @cursor
deallocate @cursor

 

以上是关于SQL将用户表中已存在的数据所有姓名(汉字)转换为拼音首字母的主要内容,如果未能解决你的问题,请参考以下文章

用户组或角色 'zgb' 在当前数据库中已存在。 (Microsoft SQL Server,错误: 15023)

为啥这个表我这样写sql不能查出姓名只有两个汉字的学生信息

将 Excel 转换为 SQL 插入语句

Sqlserver用户组或角色在当前数据库中已存在

对登录名进行用户映射时,提示“用户组或角色在当前数据库中已存在”问题

sql入门语句 数据库中已存在名为某某对象