Як перетворити значення стовпця з varbinary(max)
на varchar
в зручну для читання форму?
Як перетворити значення стовпця з varbinary(max)
на varchar
в зручну для читання форму?
Відповіді:
"Перетворення а 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
для різних вимог, як зазначено в інших відповідях.
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]: https://stackoverflow.com/questions/60525910/powershell-truncating-sql-query-output?noredirect=1#comment107077512_60525910