Dirty
Дата: 12.09.2006 10:54:41
может я и торможу, но скуль считает что значения 0x и 0x00 (varbinary) равны
0x = 0x00
Тоесть если я сравниваю поле в таблице varbinary(4000), в котором записано 0x00 со значением 0x, то скуль считает что это одинаковые значения.
примерный запрос (в pole1 типа varbinary(4000) записано 0x00):
select nullif( table.pole1, 0x )
from table
возвращает null, а
select table.pole1 from table
возвращает 0x00.
Есть какие-нибудь мысли по этому поводу?
Гавриленко Сергей Алексеевич
Дата: 12.09.2006 10:59:13
"Ox" - это префикс, говорящий, что число, следующее далее, идет в шестнадцатиричном формате. Как при вводе, так и при выводе.
GreenSunrise
Дата: 12.09.2006 11:04:01
А с чего бы двум нулям не быть равными?
Dirty
Дата: 12.09.2006 11:09:21
то что 0x префикс это понятно..
тип то varbinary, мне кажется есть разница между 0x-пусто и 0x00 - ноль
GreenSunrise
Дата: 12.09.2006 11:11:41
По-моему, вы путаете ноль с NULL. 0x, 0x00 - это ноль, а NULL - это совсем другое.
Dirty
Дата: 12.09.2006 11:13:21
0x и 0x00 это ноль если их рассматривать как числа
но если эти значения записаны в поля типа varbinary, почему скуль считает что они одинаковые, даже по длине данных они отличаются
Гавриленко Сергей Алексеевич
Дата: 12.09.2006 11:15:23
Dirty |
0x и 0x00 это ноль если их рассматривать как числа но если эти значения записаны в поля типа varbinary, почему скуль считает что они одинаковые, даже по длине данных они отличаются |
И каким образом Вы длину записанных данных проверяли?
Glory
Дата: 12.09.2006 11:16:28
Dirty |
0x и 0x00 это ноль если их рассматривать как числа но если эти значения записаны в поля типа varbinary, почему скуль считает что они одинаковые, даже по длине данных они отличаются |
А почему вы решили что "скуль считает что они одинаковые" ?
GreenSunrise
Дата: 12.09.2006 11:16:46
Гы.
select datalength(0x)
select datalength(0x00)
-----------
0
-----------
1
GreenSunrise
Дата: 12.09.2006 11:17:48
И в то же время
if 0x = 0x00
print '='
else
print '!='
------------------------
=