sql-server – 如何在SQL Server 2012中将varbinary()转换为varc
发布时间:2020-12-12 16:18:43 所属栏目:MsSql教程 来源:网络整理
导读:我试图在SQL Server 2012中将数据库列DATA从varbinary()转换为varchar(max). 我正在使用此代码来处理转换: SELECT CONVERT(VARCHAR(MAX),DATA) FROM [dbo].[TABLE_NAME] 结果行如下: VW 6501 ??ama???±r 我在语言特定字符方面遇到麻烦(目前我的语言是土耳
我试图在SQL Server 2012中将数据库列DATA从varbinary()转换为varchar(max).
我正在使用此代码来处理转换: SELECT CONVERT(VARCHAR(MAX),DATA) FROM [dbo].[TABLE_NAME] 结果行如下: VW 6501 ??ama???±r 我在语言特定字符方面遇到麻烦(目前我的语言是土耳其语) 如何在SQL Server 2012中克服此编码问题? 考虑到任何给定语言的数据/编码问题丢失,是否有通用方法对任何语言进行此转换? 这可能听起来像一个菜鸟问题,但我真的很感激任何建议或答案. 谢谢, 解决方法通常,SQL Server不会高度重视UTF-8.但是,.NET有方法可以做到这一点,你可以通过CLR集成来实现它们. 使用C#编译它: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; namespace UtfLib { public static class UtfMethods { [SqlFunction(IsDeterministic = true,IsPrecise = true)] public static SqlBinary NVarCharToUtf8(SqlString inputText) { if (inputText.IsNull) return new SqlBinary(); // (null) return new SqlBinary(Encoding.UTF8.GetBytes(inputText.Value)); } [SqlFunction(IsDeterministic = true,IsPrecise = true)] public static SqlString Utf8ToNVarChar(SqlBinary inputBytes) { if (inputBytes.IsNull) return new SqlString(); // (null) return new SqlString(Encoding.UTF8.GetString(inputBytes.Value)); } } } 将程序集导入数据库并创建外部函数: CREATE ASSEMBLY UtfLib FROM 'C:UtfLib.dll' GO CREATE FUNCTION NVarCharToUtf8 (@InputText NVARCHAR(MAX)) RETURNS VARBINARY(MAX) AS EXTERNAL NAME UtfLib.[UtfLib.UtfMethods].NVarCharToUtf8 GO CREATE FUNCTION Utf8ToNVarChar (@InputBytes VARBINARY(MAX)) RETURNS NVARCHAR(MAX) AS EXTERNAL NAME UtfLib.[UtfLib.UtfMethods].Utf8ToNVarChar 最后一步,您必须启用clr sp_configure 'clr enabled',1 GO RECONFIGURE GO sp_configure 'clr enabled' -- make sure it took GO 瞧! SELECT dbo.Utf8ToNVarChar(DATA) FROM [dbo].[TABLE_NAME] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容