2010-07-20 19 views

Antwort

65

kann verschiedene Dinge bedeuten "ein varbinary auf ein varchar Konvertieren".

Wenn die varbinary die binäre Darstellung eines Strings in SQL Server (zum Beispiel wieder durch direkt an varbinary Gießen oder von den DecryptByPassPhrase oder DECOMPRESS Funktionen) können Sie nur CAST es

declare @b varbinary(max) 
set @b = 0x5468697320697320612074657374 

select cast(@b as varchar(max)) /*Returns "This is a test"*/ 

Dies entspricht Verwenden von CONVERT mit einem Style-Parameter von 0.

CONVERT(varchar(max), @b, 0) 

Andere style Parameter sind mit CONVERT für unterschiedliche Anforderungen wie in anderen Antworten zur Kenntnis genommen.

+20

DIESE ANTWORT IST NICHT KORREKT. Ich habe es in der Tabelle mit Benutzer-SIDs getestet - die Anzahl der eindeutigen Casted-Werte ist geringer als die Anzahl der Distinct-Binär-SIDs. Sie sollten CONVERT (VARCHAR (...), binaryValue, 2) verwenden, um einen eindeutigen Wert zu erhalten - die Antwort von Gunjan Juyal ist die richtige - es sollte als Lösung markiert werden –

+9

@PhilippMunin - Die zwei Antworten machen verschiedene Dinge. Dieser verwendet das Ergebnis eines Ausdrucks wie SELECT CAST ('Dies ist ein Test' AS VARBINARY (100)) ', der in meiner Standardsortierung" 0x5468697320697320612074657374 "ist, und konvertiert ihn zurück in die' varchar'-Zeichenfolge. Gunjans Antwort gibt die hexadezimale Darstellung als String zurück ('5468697320697320612074657374'). Vermutlich stimmt diese Interpretation für die Notwendigkeit des OP, als sie es akzeptierten. –

+5

DIESE ANTWORT IST RICHTIG! Ich habe es getestet und es macht, was ich und der OP gewünscht haben. –

12

Try this

SELECT CONVERT(varchar(5000), yourvarbincolumn, 0) 
+6

Ich musste eine 2 als mein dritter Parameter, anstelle einer Null. Ich fand diese Antwort [hier] (http://stackoverflow.com/questions/12139073/sql-server-converting-varbinary-to-string). – WEFX

+0

in meinem Fall muss ich MAX statt 5000 verwenden – sulaiman

86

Der folgende Ausdruck für mich gearbeitet:

SELECT CONVERT(VARCHAR(1000), varbinary_value, 2); 

Here weitere Einzelheiten über die Wahl des Stils (der dritte Parameter) sind.

+1

wäre nett, wenn die OP dies als Antwort markieren. – celerno

+0

Wie von @ lara-mayugba unten beschrieben, enthält Stil 1 das Präfix 0x im Ergebnis, was nützlich sein kann. – Stan

+0

@celerno warum sollten sie? Das tut nicht, was sie brauchen. –

23

Eigentlich ist die beste Antwort

SELECT CONVERT(VARCHAR(1000), varbinary_value, 1); 

mit "2" schneidet die "0x" zu Beginn des varbinary ab.

+0

diese Arbeit für mich – Jozcar

Verwandte Themen