Как преобразовать значение столбца из varbinary(max)
в varchar
в удобочитаемую форму?
Как преобразовать значение столбца из varbinary(max)
в varchar
в удобочитаемую форму?
Ответы:
«Преобразование a varbinary
в a 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
для различных требований, как указано в других ответах.
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)
:
cast(Content as nvarchar(max))
Или
CONVERT(NVARCHAR(MAX), Content, 0)
VARCHAR(MAX) didn't show the entire value
Попробуйте следующее, так как я боролся со слишком оригинальным постом [Здесь] [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