Wie konvertiere ich einen Spaltenwert von varbinary(max)
in varchar
in lesbare Form?
Wie konvertiere ich einen Spaltenwert von varbinary(max)
in varchar
in lesbare Form?
Antworten:
„Eine Konvertierung varbinary
auf ein varchar
“ kann verschiedene Dinge bedeuten.
Wenn die Varbinary die binäre Darstellung einer Zeichenfolge in SQL Server ist (z. B. durch Casting varbinary
direkt oder von den Funktionen DecryptByPassPhrase
oder zurückgegeben DECOMPRESS
), können Sie dies einfach CAST
tun
declare @b varbinary(max)
set @b = 0x5468697320697320612074657374
select cast(@b as varchar(max)) /*Returns "This is a test"*/
Dies entspricht der Verwendung CONVERT
mit einem Stilparameter von 0
.
CONVERT(varchar(max), @b, 0)
Andere Stilparameter sind CONVERT
für unterschiedliche Anforderungen verfügbar, wie in anderen Antworten angegeben.
SELECT CAST('This is a test' AS VARBINARY(100))
die 0x5468697320697320612074657374
in meiner Standardsortierung und wandelt sie in den Rücken varchar
String. Gunjans Antwort gibt die hexadezimale Darstellung als Zeichenfolge zurück ('5468697320697320612074657374'). Vermutlich ist diese Interpretation für die Bedürfnisse des OP korrekt, da sie sie akzeptiert haben.
CONVERT
gibt es einen Stilparameter, mit dem Sie auswählen können, wie Sie möchten (meine Interpretation ist der Standardstil). Daher ist diese Antwort im Moment möglicherweise nicht das, was Sie für Ihren Anwendungsfall benötigen, aber für andere Anwendungsfälle korrekt. Einschließlich der ursprünglichen Fragesteller, die "vom Menschen lesbare Form" angegeben haben, nicht hexadezimal.
Der folgende Ausdruck hat bei mir funktioniert:
SELECT CONVERT(VARCHAR(1000), varbinary_value, 2);
Hier finden Sie weitere Details zur Stilauswahl (der dritte Parameter).
Eigentlich ist die beste Antwort
SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);
mit " 2
" wird das " 0x
" am Anfang des abgeschnitten varbinary
.
Versuche dies
SELECT CONVERT(varchar(5000), yourvarbincolumn, 0)
Für eine VARBINARY(MAX)
Kolumne musste ich verwenden NVARCHAR(MAX)
:
cast(Content as nvarchar(max))
Oder
CONVERT(NVARCHAR(MAX), Content, 0)
VARCHAR(MAX) didn't show the entire value
Probieren Sie es unten aus, da ich mit einem zu originellen Beitrag zu kämpfen hatte. [Hier] [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