Кодировка символов, используемая sys.fn_sqlvarbasetostr - PullRequest
1 голос
/ 13 сентября 2011

Я беру резервную копию своего набора данных как CSV.Однако одна из таблиц содержит двоичное поле.Я сталкивался с этой функцией, sys.fn_sqlvarbasetostr, предоставляемой MS SQL, но я не могу найти, какую кодировку символов она будет использовать.

Если вам известен какой-либо другой подход для этого, plz, дайте мне знать.

Редактировать : -

Мы закончили тем, что сделали это на C #, но я все еще отмечаю ответ Алекса как правильный, потому что, если бы я должен был сделать это через запросы SQLтогда его ответ сработает.

Подход, который мы получили в итоге: - Для двоичного столбца csv содержит шестнадцатеричное значение, поэтому пример строки выглядит как 'somename', 'someothertext', 2bcd8 (шестнадцатеричный код, представляющий двоичные данные).Первоначально мы не писали шестнадцатеричные данные должным образом.Сбой 0x3d455, «0xa2342», «3444d», 2bcd8 УСПЕХ!

1 Ответ

0 голосов
/ 13 сентября 2011

В 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...