Member 13112102 Ответов: 1

Sql server 2012 непосредственно вставляю в столбец varbinary(max) из значения image. - Последние 1 пропущенные цифры и значение перед 2 символами после 0 добавлено?


SQL server 2012 непосредственно у меня есть вставка в столбец varbinary(max) из значения изображения. Последние 1 пропущенные цифры и значение перед 2 символами после 0 добавлено почему? и я не могу построить образ

Что я уже пробовал:

вот пример запроса Sql server

1) здесь ноль не прибавляется ? я хочу только в этом формате
declare @data varbinary(max)
set @data = 0xFFD8FFE0
select  @data

солн:-
0xFFD8FFE0

2) здесь ноль добавлено ?
declare @data1 varbinary(max)
set @data1 = 0xFFD8FFE00
select  @data1

солн:-
0x0FFD8FFE00



пожалуйста, дайте мне решение .....

Richard MacCutchan

Результаты точно соответствуют данным, которые вы вставляете.

1 Ответов

Рейтинг:
2

OriginalGriff

Когда я запускаю ваш код, я получаю именно то, что ожидаю:

declare @data varbinary(max)
set @data = 0xFFD8FFE0
select  @data

declare @data1 varbinary(max)
set @data1 = 0xFFD8FFE00
select  @data1

Дает
(No column name)
0xFFD8FFE0

(No column name)
0x0FFD8FFE00
И это правильно.
Проблема в том, что вы ожидаете "ведущего нуля" на Первом числе, а его не существует. Когда вы храните данные в столбце VARBINARY, они хранятся в виде байтов - 8 - битных беззнаковых величин. но вводимые данные обрабатываются как пары шестнадцатеричных цифр, начиная с правого конца. Таким образом 0xFFD8FFE0 хранится в виде байтов:
FF D8 FF E0
а 0xFFD8FFE00 хранится как
0F FD 8F FE 00

Если вы не укажете четное число цифр, то в данные будет вставлен "ведущий ноль", как я и ожидал.