webentwicklung-frage-antwort-db.com.de

SQL Server konvertiert Varbinary in String

Ich möchte eine Konvertierung in T-SQL von einem varbinary-Typ in einen Zeichenfolgentyp durchführen

Hier ist ein Beispiel :

Zuerst bekam ich diese varbinary

0x21232F297A57A5A743894A0E4A801FC3

Und dann möchte ich es in konvertieren 

21232f297a57a5a743894a0e4a801fc3

Wie macht man das?

48
strike_noir

Versuchen:

DECLARE @varbinaryField varbinary(max);
SET @varbinaryField = 0x21232F297A57A5A743894A0E4A801FC3;

SELECT CONVERT(varchar(max),@varbinaryField,2), 
@varbinaryField

AKTUALISIERT: Für SQL Server 2008

73
András Ottó

Ich weiß, dass dies eine alte Frage ist, aber hier ist ein alternativer Ansatz, den ich in einigen Situationen als nützlicher empfunden habe. Ich glaube, dass die master.dbo.fn_varbintohexstr-Funktion mindestens seit SQL2K in SQL Server verfügbar ist. Der Vollständigkeit halber hier hinzufügen. Für manche Leser ist es möglicherweise aufschlussreich, den Quellcode dieser Funktion zu lesen.

declare @source varbinary(max);
set @source = 0x21232F297A57A5A743894A0E4A801FC3;
select varbin_source = @source
,string_result = master.dbo.fn_varbintohexstr (@source)
11
Craig.Feied

Wenn Sie einen einzelnen VARBINARY-Wert in VARCHAR (STRING) konvertieren möchten, können Sie eine Variable wie folgt deklarieren:

DECLARE @var VARBINARY(MAX)
SET @var = 0x21232F297A57A5A743894A0E4A801FC3
SELECT CAST(@var AS VARCHAR(MAX))

Wenn Sie versuchen, aus der Tabellenspalte auszuwählen, können Sie Folgendes tun:

SELECT CAST(myBinaryCol AS VARCHAR(MAX))
FROM myTable
6
hims056

Dies funktioniert in SQL 2005 und 2008:

declare @source varbinary(max);
set @source = 0x21232F297A57A5A743894A0E4A801FC3;
select cast('' as xml).value('xs:hexBinary(sql:variable("@source"))', 'varchar(max)');
3
Kuba Wyrostek

Ich habe überall nach einer Antwort gesucht und das hat schließlich für mich funktioniert:

SELECT Lower(Substring(MASTER.dbo.Fn_varbintohexstr(0x21232F297A57A5A743894A0E4A801FC3), 3, 8000))

Ausgaben an (String):

21232f297a57a5a743894a0e4a801fc3

Sie können es auch in Ihren WHERE- oder JOIN-Bedingungen verwenden, wenn Sie varbinary-Datensätze mit Zeichenfolgen vergleichen/vergleichen möchten

1
Walter R

Hier ist ein einfaches Beispiel, das ich geschrieben habe, um die beiden Konvertierungsmethoden zu konvertieren und zurück zu konvertieren. Ich habe es auch mit einer festen Zeichenfolge überprüft

@ VB1 VARBINARY (500), @ VB2 VARBINARY (500), @ VB3 VARBINARY (500) deklarieren

@ S1 VARCHAR deklarieren (500)

SET @ VB1 = HASHBYTES ('SHA1', 'Test')

SET @ S1 = CONVERT (varchar (500), @ VB1,2)

SET @ VB2 = CONVERT (varbinary (500), @ S1,2)

SET @ VB3 = CONVERT (varbinary (500), '640AB2BAE07BEDC4C163F679A746F7AB7FB5D1FA', 2)

SELECT @ VB1, @ S1, @ VB2, @ VB3

IF @ VB1 = @ VB2 PRINT "Sie passen zusammen (2)"

IF @ VB1 = @ VB3 PRINT "Sie passen zusammen (3)"

PRINT str (Len (@ VB1))

PRINT str (Len (@ S1))

PRINT str (Len (@ VB2))

SET @ VB1 = HASHBYTES ('SHA1', 'Test')

SET @ S1 = CONVERT (varchar (500), @ VB1,1)

SET @ VB2 = CONVERT (varbinary (500), @ S1,1)

SELECT @ VB1, @ S1, @ VB2

IF @ VB1 = @ VB2 PRINT "Sie passen zusammen (1)"

PRINT str (Len (@ VB1))

PRINT str (Len (@ S1))

PRINT str (Len (@ VB2))

und die Ausgabe

| Pro-kaer-kaer-kaer-kaer-kaer-kaer-kaer-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kolon-kol-ger-kanal-kolon-kolon-kolon-kolon-kolon-kolon-kol-kol-kanal-kanal-kol-kol-kanal-kanal-kol-kol-kanal-kanal-kanal-kanal-kanal-kanal-kolbensofa-kanal-kanal-kanal-kanal-kolonne-kolben-kanal-kollegen-Systems nicht umstellen

(1 Zeile (n) betroffen)

Sie passen zusammen (2)

Sie passen zusammen (3)

    20
    40
    20

|| 0x640AB2BAE07BEDC4C163F679A746F7AB7FB5D1FA | 0x640AB2BAE07BEDC4C163F679A746F7AB7FB5D1FA | 0x640AB2BAE07BEDC4C163F679677677677677677677677677

(1 Zeile (n) betroffen)

Sie passen zusammen (1)

    20
    42
    20
0
Brian