gpt4 book ai didi

sql - OPENXML,将 Base64 转换为二进制

转载 作者:行者123 更新时间:2023-12-05 01:48:26 25 4
gpt4 key购买 nike

对于导入/导出过程,我们将二进制数据作为 Base64 编码字符串放入 XML 中。取回值时出现问题...

我们正在使用 OPENXML,因为使用 nodes() 时 2005/2008 的性能很糟糕- 它根本不能很好地扩展。他们修复了 SQL Server 2012 中的性能问题,但出于对遗留支持 (2005+) 的考虑,这不是一个现实的选择,而且 MS 似乎不想向后移植东西(假设甚至可能)。

这是一些 relevant info on the subject .

理想情况下,我正在寻找使用 OPENXML 的单个 SQL 语句来分解包含编码为 Base64 的二进制数据的 XML 文档,并在其中提供一个结果集,以将数据正确呈现为二进制数据。我有一个不使用节点的解决方案,希望有人有更好的解决方案。

最佳答案

您可以将您的列指定为 XML 并使用 .value 将数据获取为 varbinary

像这样。

declare @XML xml 

set @XML =
'<root>
<item>
<ID>1</ID>
<Col>Um93MQ==</Col>
</item>
<item>
<ID>2</ID>
<Col>Um93Mg==</Col>
</item>
</root>'

declare @idoc int
exec sp_xml_preparedocument @idoc out, @xml

select T.ID,
T.Col.value('.', 'varbinary(max)')
from openxml(@idoc, '/root/item', 2)
with (ID int,
Col xml) as T

exec sp_xml_removedocument @idoc

或者您可以像这样使用 CLR(如果您可以选择):

using System;
using System.Text;
public class CLRTest
{
public static byte[] ConvertBase64ToBinary(string str)
{
if (str == null)
{
return null;
}
return Convert.FromBase64String(str);
}
}

关于sql - OPENXML,将 Base64 转换为二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11876750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com