Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Странность в загрузке BLOB в таблицу  [new]
volkforlive
Member

Откуда:
Сообщений: 49
Добрый день!

Мне нужно загрузить файлик в поле таблицы. Ну ок, делаю это скриптом :

INSERT INTO [Project].[dbo].[Table1]
     ([Version]
,[Date]
,[Xsd])
VALUES
('3.3.3.3',
'20140520'
,(SELECT *
FROM OPENROWSET(BULK N'D:\File.XSD', SINGLE_CLOB) AS XSD))
GO


В результате, в таблицу попадает файлик. Он имеет примерно такой вид: 0xDEFFFBF6C8F1...........
Копирую эту строку и прописываю такую строчку в скрипт (он должен записывать этот файл автоматом).

if exists (select Version from Table1 where Version ='3.3.3.3') update Table1 set [Xsd]=0xDEFFFBF6C8F1...........  where Version ='3.3.3.3'
	else insert into Table1 ([Version],[Xsd]) values ('3.3.3.3',0xDEFFFBF6C8F1...........


Скрипт выполняется успешно... но затем в базу пишется 0x0DeFFF.... то есть лишний ноль перед строкой.

Подскажите пожалуйста,как убрать это лишний ноль?
20 май 14, 15:41    [16043306]     Ответить | Цитировать Сообщить модератору
 Re: Странность в загрузке BLOB в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
volkforlive
Подскажите пожалуйста,как убрать это лишний ноль?

А вы уверены, что при "Копирую эту строку" вы скопировали четное число знаков ?

declare @x varbinary(50)
set @x = 0xD
select @x
20 май 14, 15:44    [16043325]     Ответить | Цитировать Сообщить модератору
 Re: Странность в загрузке BLOB в таблицу  [new]
volkforlive
Member

Откуда:
Сообщений: 49
Glory,

да, все именно так- последний символ не копируется. Я посмотрел скрипт- (в который копирую получившуюся строку)- там этот последний символ есть.
После выполнения скрипта- он пропадает, а перед всей строкой появляется 0.
22 май 14, 13:46    [16054805]     Ответить | Цитировать Сообщить модератору
 Re: Странность в загрузке BLOB в таблицу  [new]
Glory
Member

Откуда:
Сообщений: 104760
volkforlive
да, все именно так- последний символ не копируется. Я посмотрел скрипт- (в который копирую получившуюся строку)- там этот последний символ есть.
После выполнения скрипта- он пропадает, а перед всей строкой появляется 0.
\
еще раз
бинарная константа состоит из _четного_ числа символов
При нечетном числе символов впереди будет добавлен 0
declare @x1 varbinary(50), @x2 varbinary(50), @x3 varbinary(50), @x4 varbinary(50)
set @x1 = 0xD
set @x2 = 0xDA
set @x3 = 0xDAE
set @x4 = 0xDAEF
select @x1, @x2, @x3, @x4
22 май 14, 13:49    [16054842]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить