Как преобразовать значение столбца из varbinary(max)
в varchar
в удобочитаемую форму?
sql
sql-server
sql-server-2005
tsql
Билгин Кылыч
источник
источник
Ответы:
«Преобразование a
varbinary
в avarchar
» может означать разные вещи.Если 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
для различных требований, как указано в других ответах.источник
SELECT CAST('This is a test' AS VARBINARY(100))
которое есть0x5468697320697320612074657374
в моем сопоставлении по умолчанию, и преобразует его обратно вvarchar
строку. Ответ Гунджана возвращает шестнадцатеричное представление в виде строки ('5468697320697320612074657374'). Предположительно, эта интерпретация верна для потребностей OP, поскольку они ее приняли.CONVERT
есть параметр стиля, позволяющий выбрать тот способ, который вы хотите (моя интерпретация - стиль по умолчанию). Таким образом, этот ответ может быть не тем, что вам нужно для вашего варианта использования на данный момент, но он верен для других вариантов использования. Включая первоначального спрашивающего, который указал "читабельную форму", а не шестнадцатеричный.У меня сработало следующее выражение:
SELECT CONVERT(VARCHAR(1000), varbinary_value, 2);
Здесь подробнее о выборе стиля (третий параметр).
источник
На самом деле лучший ответ
SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);
использование "
2
" обрезает "0x
" в началеvarbinary
.источник
Попробуй это
SELECT CONVERT(varchar(5000), yourvarbincolumn, 0)
источник
Для
VARBINARY(MAX)
столбца пришлось использоватьNVARCHAR(MAX)
:Или
CONVERT(NVARCHAR(MAX), Content, 0) VARCHAR(MAX) didn't show the entire value
источник
Я пробовал это, у меня это сработало:
declare @b2 VARBINARY(MAX) set @b2 = 0x54006800690073002000690073002000610020007400650073007400 SELECT CONVERT(nVARCHAR(1000), @b2, 0);
источник
Попробуйте следующее, так как я боролся со слишком оригинальным постом [Здесь] [1]
bcp "SELECT CAST(BINARYCOL AS VARCHAR(MAX)) FROM OLTP_TABLE WHERE ID=123123 AND COMPANYID=123" queryout "C:\Users\USER\Documents\ps_scripts\res.txt" -c -S myserver.db.com -U admin -P password [1]: /programming/60525910/powershell-truncating-sql-query-output?noredirect=1#comment107077512_60525910
источник