Як перетворити значення стовпця з 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