2016-09-28 5 views
2

Ich habe eine Spalte des Bilddatentyps, die ein Stück Software verwendet, um Text aus irgendeinem Grund zu speichern.Bilddatentyp in Varchar konvertieren

Ich versuche, die Daten herauszuziehen und es in Varchar konvertieren, mit vielen Beispielen, die ich hier gefunden habe.

Zur Zeit habe ich

SELECT CONVERT(VARCHAR(MAX), CONVERT(VARBINARY(MAX), BITS,2)) FROM V_SO_MTL_BINARY 

Das Problem ist nur, dass das erste Zeichen aus dem String aus irgendeinem Grunde umwandelt. Wie konvertiere ich von Image zu Varchar und erhalte nicht nur das erste Zeichen.

+1

Sie gerade benötigen 'NVARCHAR (MAX)' statt VARCHAR (MAX) 'je nachdem, wie die Daten, die ursprünglich eingeführt wird. –

+0

Das war es, posten Sie es als Antwort und ich werde es akzeptieren. Natürlich war es so einfach. – AlexF11

Antwort

4

Sie könnten nur NVARCHAR(MAX) anstelle von VARCHAR(MAX) benötigen, je nachdem, wie die Daten ursprünglich eingefügt wurden.

Wenn es in der Tat nvarchar dann typischer ASCII-Text wird viele 00 Bytes hat. z.B. N'Some String' als 0x53006F006D006500200053007400720069006E006700 gespeichert

Diese wird als String abschließende Nullzeichen behandelt werden, wenn wieder auf varchar Gießen daher nur das erste Zeichen zu sehen.

SELECT CAST(0x53006F006D006500200053007400720069006E006700 AS VARCHAR(30)) 

Returns S