Wie konvertieren von nvarchar -, varbinary-genau
Ich habe eine Tabelle, die Spalte [password]
gespeichert nvarchar(max)
. Ich will wandeln es in varbinary(max)
.
Ich habe eine neue Spalte namens [temp]
und deklariert es als varbinary(max)
. Dann habe ich aktualisiert mit CONVERT
:
update tempuser set [temp]=CONVERT(varbinary(max), CONVERT(nvarchar(max),[password]))
Nun in der [temp] - Spalte der Wert anders ist. Zum Beispiel, ein Wert für [password]
begann mit dieser:
0x3E6AFF88...
Den entsprechenden Eintrag in der [temp] beginnt mit:
0x30783345...
Auch wenn [password]
ist NULL
, [temp]
wird 0x4E554C4C
.
Warum, glauben Sie, Sie sollte das selbe sein?
Vereinbart mit @Ziege. Sie konvertieren eine Zeichenfolge, die passiert look wie ein binärer Wert, denn es beginnt mit 0x. Leider sind diese nicht die gleiche Sache. Versuchen
Vereinbart mit @Ziege. Sie konvertieren eine Zeichenfolge, die passiert look wie ein binärer Wert, denn es beginnt mit 0x. Leider sind diese nicht die gleiche Sache. Versuchen
CONVERT(VARBINARY(MAX), [password]), 1)
.InformationsquelleAutor user2429070 | 2013-07-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Sie konvertieren einen string, der sieht aus wie ein binärer Wert, denn es beginnt mit
0x
. Leider sind diese nicht die gleiche Sache, und in Reihenfolge für SQL Server zu verstehen, dass Sie wollen, interpretiert den string als aktuellen binären Wert zu konvertieren direkt, statt eine Zeichenfolge zu konvertieren, die zu Ihrer binären Darstellung verwenden, benötigen Sie einen style-parameter:Beachten Sie, dass die Umwandlung eines
NVARCHAR(MAX)
zuNVARCHAR(MAX)
ist unnötig.Nun, es ist möglich, dass, weil Sie entschied sich
NVARCHAR(MAX)
für einige Grund, dass die Spalte enthält Müll, der nicht umgewandelt werden, so dass Sie können auf diesen Fehler stoßen:In diesem Fall müssen Sie die Werte, die nicht mit
0x
(oder sonst enthalten, die nicht förderfähig Zeichen) und beheben Sie Sie.Ich weiß nicht, was du meinst. Das ist es, was das update macht, aber die ursprünglichen Werte müssen konvertiert werden kann, um eine binäre. Da Sie gespeichert ist "binary" - Werte in eine string-Spalte, es gibt keine Garantie, Sie können alle umgewandelt werden binäre.
ja......das ist wahr.
InformationsquelleAutor Aaron Bertrand
Scheint es, dass Sie Ihre Passwort-Feld ist nicht wirklich ein varbinary, trotz sah aus wie ein.
Führen Sie diese für ein Beispiel:
Sehen Sie, dass Ihr Ergebnis ist das äquivalent der ursprünglichen Zeichenfolge, die in varbinary-format.
SELECT CAST(123456 AS VARBINARY(MAX));
werden Sie sehen, dass das Ergebnis0x0001E240
hat eineE
.VARBINARY
Buchstaben ausA
bisF
Huh, interessant, vielen Dank dafür. Sogar meine 'Hund' beispielsweise hatte einen Brief, dass ich es nicht bemerkt.
InformationsquelleAutor Hart CO