sys.fn_sqlvarbasetostr使用的字符编码

时间:2011-09-13 11:34:32

标签: sql tsql encoding csv

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

如果您知道其他任何方法,请告诉我。

修改 的: -

我们最终在c#中执行了此操作,但我仍然认为Alex的答案是正确的,因为如果我通过SQL查询执行此操作,那么他的答案将会有效。

接近我们的结果: - 对于二进制列,csv包含十六进制值,因此示例行看起来像'somename','someothertext',2bcd8(十六进制表示二进制数据)。 最初我们没有正确编写十六进制数据。 0x3d455失败,'0xa2342'失败,'3444d'失败,2bcd8成功!

1 个答案:

答案 0 :(得分:0)

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