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)