2016-09-28 3 views
1

Ich habe eine Tabelle, die aus irgendeinem Grund Text als IMAGE speichert. Ich kann die Daten greifen und sie lesen mitText in Bild-Datentyp konvertieren

SELECT CONVERT(NVARCHAR(MAX), CONVERT(VARBINARY(MAX), column,2)) FROM table 

Jetzt muss ich Daten wieder in die Tabelle einfügen. Ich habe versucht,

SELECT CONVERT(IMAGE, CAST('TEST TEXT' AS VARBINARY(MAX))) 

Aber wenn ich es mit

Umwandlung Test RÜCKSEITE
SELECT CONVERT(NVARCHAR(MAX), CONVERT(VARBINARY(MAX), CONVERT(IMAGE, CAST('TEST TEXT' AS VARBINARY(MAX))),2)) 

Es gibt 䕔 呓 吠 塅 was natürlich nicht richtig, wie es sollte "TEXT TEST"

zurückzukehren Was mache ich hier falsch?

Antwort

1

Der Text, den Sie speichern möchten, ist als binäre ASCII Zeichen codiert. Sie versuchen, es zurück in eine Unicode Textzeichenfolge zu konvertieren, die nicht das ist, was es ursprünglich war, deshalb erhalten Sie verstümmelten Text zurück.

Ändern Sie Ihre Quelle Textzeichenfolge in eine Unicode Zeichenfolge durch Zugabe von N vor ihm:

SELECT CONVERT(NVARCHAR(MAX), CONVERT(VARBINARY(MAX), CONVERT(IMAGE, CAST(N'TEST TEXT' AS VARBINARY(MAX))),2))

Es sollte den richtigen Text zurückzukehren. Getestet diese auf SQL Server 2008

1

können Sie verwenden diese ein: SELECT CONVERT (VARCHAR (MAX), convert (VARBINARY (MAX), CAST ('TEST TEXT' AS IMAGE),))

Grundsätzlich waren Sie nicht mit Ihren Zeichentyp-Conversions konsistent. In einigen Teilen hast du NVarChar und einige Teile Varchar benutzt. Auch die Zahl 2 am Ende beeinflusst das Ergebnis. In Anweisungen zum Konvertieren wird der Standardwert (0) verwendet, wenn Sie den Code nicht angeben. Wenn Sie es also zurück konvertieren, sollten Sie den gleichen Code verwenden.