sys.fn_sqlvarbasetostr 使用的字符编码

发布于 2024-12-04 08:09:48 字数 415 浏览 0 评论 0原文

我正在将数据集备份为 csv。 然而,其中一个表包含一个二进制字段。我遇到了 MS SQL 提供的 sys.fn_sqlvarbasetostr 这个函数,但我找不到它将使用哪种字符编码。

如果您知道任何其他方法可以做到这一点,请告诉我。

编辑:-

我们最终在 C# 中完成了此操作,但我仍然将 Alex 的答案标记为正确,因为如果我通过 SQL 查询来完成此操作,那么他的答案将起作用。

我们最终采用的方法是:- 对于二进制列 csv 包含一个十六进制值,因此示例行看起来像 'somename','someothertext', 2bcd8(十六进制表示二进制数据)。 最初我们没有正确写入十六进制数据。 0x3d455 失败,'0xa2342' 失败,'3444d' 失败,2bcd8 成功!

I am taking a backup of my dataset as a csv.
However, one of the table contains a binary field. I came across this function, sys.fn_sqlvarbasetostr, provided by MS SQL but I cant find which character encoding this will use.

If you know any other approach to do this, plz let me know.

Edit:-

We ended up doing this in c#, but I am still marking Alex's answer as correct because if I was to do this through SQL queries then his answer will work.

Approach we ended up with:-
For binary column csv contains a hex value, so an example row looks like 'somename','someothertext', 2bcd8 (hex representing binary data).
Initially we were not writing hex data properly. 0x3d455 failed, '0xa2342' failed, '3444d' failed, 2bcd8 SUCCESS!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紫罗兰の梦幻 2024-12-11 08:09:48

2008年可以直接转换为字符串;

declare @b varbinary(1024) = 0xDEADBEEFF00D
select convert(varchar(1024), @b, 1) + ','

>>0xDEADBEEFF00D,

SQL2k:

declare @base   binary(6)   set @base = 0xB00BB00BB00B
declare @aschar varchar(14) set @aschar = dbo.fn_sqlvarbasetostr(@base)

select 'as string: ' + @aschar

--convert back to binary
declare @bin binary(6)
declare @sql nvarchar(512) = 'set @bin=convert(binary(6),' + @aschar + ')'
execute sp_executesql @sql, N'@bin binary(6) output', @bin=@bin output

select 'as binary:', @bin, case when @bin = @base then 'ok' end

对于

>>as string: 0xb00bb00bb00b
>>as binary: 0xB00BB00BB00B  ok

In 2008 you can convert to a string directly;

declare @b varbinary(1024) = 0xDEADBEEFF00D
select convert(varchar(1024), @b, 1) + ','

>>0xDEADBEEFF00D,

SQL2k:

declare @base   binary(6)   set @base = 0xB00BB00BB00B
declare @aschar varchar(14) set @aschar = dbo.fn_sqlvarbasetostr(@base)

select 'as string: ' + @aschar

--convert back to binary
declare @bin binary(6)
declare @sql nvarchar(512) = 'set @bin=convert(binary(6),' + @aschar + ')'
execute sp_executesql @sql, N'@bin binary(6) output', @bin=@bin output

select 'as binary:', @bin, case when @bin = @base then 'ok' end

For

>>as string: 0xb00bb00bb00b
>>as binary: 0xB00BB00BB00B  ok
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文