2016-09-28 5 views
2

У меня есть столбец типа данных изображения, который часть программного обеспечения использует для хранения текста по какой-либо причине.Преобразование Image datatype в Varchar

Я пытаюсь извлечь данные и преобразовать их в varchar, используя множество примеров, которые я нашел здесь.

В настоящее время у меня есть

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

Проблема заключается в том, что только преобразует первый символ из строки по некоторым причинам. Как преобразовать из Image в Varchar и не только получить первый символ.

+1

Вы можете просто нужно 'NVARCHAR (MAX)' вместо 'VARCHAR (MAX)' в зависимости от того, как данные изначально вставлен. –

+0

Так оно и было, напишите как ответ, и я соглашусь. Конечно, все было так просто. – AlexF11

ответ

4

Возможно, вам понадобится NVARCHAR(MAX) вместо VARCHAR(MAX) в зависимости от того, как данные были первоначально вставлены.

Если это действительно nvarchar, тогда типичный текст ASCII будет содержать много байтов 00. например N'Some String' хранится как 0x53006F006D006500200053007400720069006E006700

Они будут обрабатываться как строки, заканчивающие нулевые символы при возврате в varchar, следовательно, только видя первый символ.

SELECT CAST(0x53006F006D006500200053007400720069006E006700 AS VARCHAR(30)) 

Возвращает S

Смежные вопросы