2013-07-11 1 views
4

Мне нужно получить файл xml, который хранится как данные изображения в SQL Server.Извлечение данных, хранящихся как изображение в виде строки в SQL Server 2005

Я использую этот запрос -

select 
    convert(varchar, convert(binary, zd.validcontent)) 
from 
    zonedata zd 
join 
    contentitem ci on zd.itemid = ci.itemid 
where 
    id = @dpathid 

Я получаю текст, но, но результат возвращается лишь небольшая часть файла XML -

<?xml version="1.0" encoding=" 

Пожалуйста, помогите. Благодарю.

+4

Нет SQL Server 2003. Действующие годы 2000, 2005, 2008, 2008 R2, 2012 и 2014 (* CTP *) –

+0

@Damien_The_Unbeliever жаль меня плохо , –

+1

Если вы используете 'CONVERT (VARCHAR ....' без ** явно указывая длину ** для 'VARCHAR', вы получаете 30 символов. Рекомендуется использовать наилучшую выборку *** всегда *** явно указать длину для 'VARCHAR' - в' CONVERT', когда он используется как параметр - везде, действительно. –

ответ

8

char and varchar:

символ [(п)]

VARCHAR [(п | м Топор)]

Когда п не указано в определении данных или инструкции объявления переменной, длина по умолчанию равна 1. Когда п не указана при использовании CAST и CONVERT функции, длина по умолчанию 30 .

Итак, укажите подходящую длину (например, max, как показано в ответе @ Devart или в любом другом подходящем значении)

20

Возможно это будет полезно для вас -

SELECT CONVERT(VARCHAR(MAX), CONVERT(VARBINARY(MAX), zd.validcontent)) 
FROM zonedata zd 
JOIN contentitem ci ON zd.itemid = ci.itemid 
WHERE ID = @dpathid 
+0

Спасибо Devart, это то решение, которое мне нужно. –