Как преобразовать значение столбца из 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