1

У меня есть база-64 закодированных строк в базе данных SQL Server, например:Как преобразовать шестнадцатеричный varbinary в его строковое представление?

DECLARE @x VARBINARY(64); 
SET @x = 0x4b78374c6a3733514f723444444d35793665362f6c513d3d 

Когда это CAST или превращено в VARCHAR, я получаю:

+˽Ð:¾Îréî¿• 

Я ищу SQL Сервер для возврата VARCHAR с шестнадцатеричным представлением VARBINARY как VARCHAR, например:

4b78374c6a3733514f723444444d35793665362f6c513d3d 

есть ли построить в CAST/Convert/функция, которая делает т его, или он должен быть добавлен как функция, определяемая пользователем? И что будет с UDF?

Бонусные баллы, если я могу выбрать, хочу ли я получить капитал A-F или нижний регистр a-f в процессе преобразования.

ответ

1

Для SQL2005 Я хотел бы использовать xsd:hexBinarydata type:

DECLARE @x VARBINARY(64); 
SET @x = 0x4b78374c6a3733514f723444444d35793665362f6c513d3d 

SELECT '0x'+CONVERT(XML, '').value('xs:hexBinary(sql:variable("@x"))', 'VARCHAR(MAX)'); 
SELECT '0x'+LOWER(CONVERT(XML, '').value('xs:hexBinary(sql:variable("@x"))', 'VARCHAR(MAX)')); 

Для SQL2008 + Я хотел бы использовать CONVERT (см section Binary styles):

SELECT CONVERT(VARCHAR(MAX), @x, 1) 

Ссылки: http://blogs.msdn.com/b/sqltips/archive/2008/07/02/converting-from-hex-string-to-varbinary-and-vice-versa.aspx

+0

В вашем примере используются «hexBinary» и «CONVERT»; не могли бы вы уточнить, что такое SQL2005, а SQL2008 +? – Ehryk

+0

@ Ehryk: см. Последний пример из http://blogs.msdn.com/b/sqltips/archive/2008/07/02/converting-from-hex-string-to-varbinary-and-vice-versa.aspx –

+0

Не могли бы вы добавить это к своему ответу? – Ehryk

2
DECLARE @x VARBINARY(64); 
SET @x = 0x4b78374c6a3733514f723444444d35793665362f6c513d3d; 

SELECT CONVERT(VARCHAR(64), @x), 
     SUBSTRING(CONVERT(VARCHAR(64), @x, 1), 3, 64); 
     ----- style number is important ---^ 

Результаты:

Kx7Lj73QOr4DDM5y6e6/lQ== 4B78374C6A3733514F723444444D35793665362F6C513D3D 

Если вы хотите строчные, просто обернуть всю SUBSTRING операцию в LOWER().

SQLFiddle demo

Смежные вопросы