Varbinary to string на SQL Server

Как преобразовать значение столбца из varbinary(max) в varchar в удобочитаемую форму?

Ответ 1

"Преобразование varbinary в varchar " может означать разные вещи.

Если varbinary - это двоичное представление строки в SQL Server (например, возвращаемое путем непосредственного приведения к varbinary или из DecryptByPassPhrase или DECOMPRESS), вы можете просто CAST ее

declare @b varbinary(max)
set @b = 0x5468697320697320612074657374

select cast(@b as varchar(max)) /*Returns "This is a test"*/

Это эквивалентно использованию CONVERT с параметром стиля 0.

CONVERT(varchar(max), @b, 0)

Другие параметры стиля доступны с CONVERT для различных требований, как отмечено в других ответах.

Ответ 2

Для меня работало следующее выражение:

SELECT CONVERT(VARCHAR(1000), varbinary_value, 2);

Здесь более подробная информация о выборе стиля (третий параметр).

Ответ 3

На самом деле лучшим ответом является

SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);

используя "2", отключает "0x" в начале varbinary.

Ответ 4

Попробуйте это

SELECT CONVERT(varchar(5000), yourvarbincolumn, 0)

Ответ 5

Для столбца VARBINARY(MAX) мне пришлось использовать NVARCHAR(MAX):

cast(Content as nvarchar(max))

Или

CONVERT(NVARCHAR(MAX), Content, 0)
VARCHAR(MAX) didn't show the entire value

Ответ 6

Я попробовал это, у меня это сработало:

declare @b2 VARBINARY(MAX) 
set @b2 = 0x54006800690073002000690073002000610020007400650073007400
SELECT CONVERT(nVARCHAR(1000), @b2, 0);