如何SQL数据库表里把其中一列转换成Unicode

如何SQL数据库表里把其中一列转换成Unicode,第1张

将你的编码字段转为nchar或者nvarchar类型的就是转为了unicode的了,用convert函数,比如:convert(nvarchar(2),'01')

干脆直接将编码那字段直接换成nvarcha或者nchar类型的就可以了

1、先把数据库数据倒出来(导成.txt格式的),用软件转成unicode格式。

2、把数据库转成unicode格式。

3、把数据倒回。

说明:为了安全起见,在 *** 作过程中一定要注意备份 *** 作。

SqlServer

SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本

SQL Server 关系数据库简介:

SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。 SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出的最新版本。

GO

/*

=======================================

功能描述: 将UniCode字符串进行解码

执行范例:select [dbo].[Fun_UniDecode]('adsfdf"\u4ea7\u51fa\u8bc4\u4ef7\uas1233')

=======================================

*/

ALTER FUNCTION [dbo].[Fun_UniDecode]

(

@String VARCHAR(MAX)

)

RETURNS VARCHAR(MAX)

AS

BEGIN

--验证参数

IF @String IS NULL RETURN NULL

IF @String = '' RETURN ''

IF @String NOT LIKE '%\u%' RETURN @String

--定义变量保存返回结果

DECLARE @RtnString VARCHAR(MAX) = ''

--拆分行数据

WHILE @String <>''

BEGIN

DECLARE @char CHAR(2) = LEFT(@String, 2)

IF (@char = '\u' AND LEN(@String) >= 6)

BEGIN

SET @String = STUFF(@String, 1, 2, '')

DECLARE @hexint INT = [dbo].[Fun_StrHexToInt](LEFT(@String, 4))

IF (@hexint >= 0)

BEGIN

SET @RtnString = @RtnString + NCHAR(@hexint)

SET @String = STUFF(@String, 1, 4, '')

CONTINUE

END

SET @RtnString = @RtnString + '\u'

CONTINUE

END

ELSE

BEGIN

SET @RtnString = @RtnString + LEFT(@String, 1)

SET @String = STUFF(@String, 1, 1, '')

END

END

RETURN @RtnString

END

GO

create function [dbo].[Fun_StrHexToInt](@h varchar(8))

returns bigint

begin

declare @r bigint

set @r=0

declare @i bigint

set @i=1

while @i<=len(@h)

begin

set @r=@r+

convert(int,

(

case

when substring(@h,@i,1)<='9' then substring(@h,@i,1)

when substring(@h,@i,1)<='A' then '10'

when substring(@h,@i,1)<='B' then '11'

when substring(@h,@i,1)<='C' then '12'

when substring(@h,@i,1)<='D' then '13'

when substring(@h,@i,1)<='E' then '14'

when substring(@h,@i,1)<='F' then '15'

end

))

*power(16,len(@h)-@i)

set @i=@i+1

end

return @r

end

--test

select [dbo].[Fun_UniDecode]('adsfdf"\u4ea7\u51fa\u8bc4\u4ef7\uas1233')


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6744147.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存