Почему я не могу сравнить эти шестнадцатеричные значения? - PullRequest
1 голос
/ 02 ноября 2010

У меня есть два набора шестнадцатеричных значений как таковых:

---------- ------------------
0x0062EB3F 0x000000020062EB3F
0x0062EF17 0x000000020062EF17
0x0062EF30 0x000000020062EF30
0x0062EF38 0x000000020062EF38
0x0062EF3B 0x000000020062EF3B
0x0062EF3F 0x000000020062EF3F
0x0062EF40 0x000000020062EF40

Единственная разница - начальные нули, все они совпадают с номером рядом с ним. Так почему же MSSQL не считает их равными? Я что-то упустил?

Ответы [ 2 ]

8 голосов
/ 02 ноября 2010

На самом деле, они отличаются не только для ведущих нулей:

 0x        0062EB3F 
 0x000000020062EB3F
          *
          *

Там есть дополнительные "2" ..... так что они не то же самое!

5 голосов
/ 02 ноября 2010

Прежде всего, цифры, которые вы указали в своем вопросе, не совпадают:

0x0062EB3F  !=  0x000000020062EB3F
                         ^

Обратите внимание, число справа имеет дополнительные 2

Кроме того, это зависит от того, какой тип данных SQL-сервер использует для хранения чисел. Если они хранятся как INT или BIGINT, то 0x0001 эквивалентно 0x1, но если они, например, хранятся как VARBINARY - тогда 0x0001 не совпадает с 0x1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...