Come convertire un valore di colonna da varbinary(max)
a varchar
in un formato leggibile dall'uomo?
Come convertire un valore di colonna da varbinary(max)
a varchar
in un formato leggibile dall'uomo?
Risposte:
"Conversione di a varbinary
in avarchar
" può significare cose diverse.
Se il varbinary è la rappresentazione binaria di una stringa in SQL Server (ad esempio restituita dal casting varbinary
direttamente o dalle funzioni DecryptByPassPhrase
o DECOMPRESS
) puoi semplicemente CAST
farlo
declare @b varbinary(max)
set @b = 0x5468697320697320612074657374
select cast(@b as varchar(max)) /*Returns "This is a test"*/
Questo è l'equivalente dell'uso CONVERT
con un parametro di stile di 0
.
CONVERT(varchar(max), @b, 0)
Sono disponibili altri parametri di stile CONVERT
per requisiti diversi, come indicato in altre risposte.
SELECT CAST('This is a test' AS VARBINARY(100))
che è 0x5468697320697320612074657374
nelle mie regole di confronto predefinite e lo converte di nuovo nella varchar
stringa. La risposta di Gunjan restituisce la rappresentazione esadecimale come una stringa ('5468697320697320612074657374') Presumibilmente questa interpretazione è corretta per le necessità dell'OP così come l'hanno accettata.
CONVERT
ha un parametro di stile per selezionare il modo in cui desideri (la mia interpretazione è lo stile predefinito) Quindi questa risposta potrebbe non essere ciò di cui hai bisogno per il tuo caso d'uso al momento, ma è corretta per altri casi d'uso. Compreso l'interrogante originale che ha specificato "forma leggibile dall'uomo" non esadecimale.
La seguente espressione ha funzionato per me:
SELECT CONVERT(VARCHAR(1000), varbinary_value, 2);
Ecco maggiori dettagli sulla scelta dello stile (il terzo parametro).
In realtà la risposta migliore è
SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);
utilizzando " 2
" si interrompe " 0x
" all'inizio di varbinary
.
Prova questo
SELECT CONVERT(varchar(5000), yourvarbincolumn, 0)
Per una VARBINARY(MAX)
colonna, ho dovuto usare NVARCHAR(MAX)
:
cast(Content as nvarchar(max))
O
CONVERT(NVARCHAR(MAX), Content, 0)
VARCHAR(MAX) didn't show the entire value
Dai un'occhiata al seguito perché stavo lottando troppo per il post originale [Qui] [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