- 1
select count(*) from jxlspp_prices where 0!=0 or catid = 2 }
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−119
select count(*) from jxlspp_prices where 0!=0 or catid = 2 }
А вот так его!
Elvenfighter 07.10.2012 22:54 # +3
Где.. в параллельной вселенной конечно же!
LispGovno 07.10.2012 23:15 # 0
where NULL!=NULL вернуло бы true, но уже в нашей вселенной.
vercetti 07.10.2012 23:27 # +1
LispGovno 07.10.2012 23:34 # 0
http://ideone.com/vkKvb
Впрочем согласен.
vercetti 08.10.2012 00:12 # 0
defecate-plusplus 08.10.2012 00:16 # +6
поэтому is NULL
bormand 08.10.2012 06:19 # +4
P.S. Ой, это SQL а не С++. Тогда любая операция с NULL (кроме is) всегда возвращает NULL, который в условных операторах засчитывается как false.
StriderMan 25.10.2012 22:50 # +1
eth0 08.10.2012 12:13 # 0
Steve_Brown 08.10.2012 13:04 # +4
bormand 08.10.2012 13:29 # +1
Steve_Brown 09.10.2012 10:40 # +1
( http://govnokod.ru/10055 )
TarasB 09.10.2012 13:12 # +1
Да, обстановка на ГК в те времена была намного душевнее...
Vindicar 08.10.2012 14:13 # +2
eth0 08.10.2012 19:10 # 0
LispGovno 08.10.2012 19:14 # 0
На некоторых платформах вернет false, а на некоторых true
LispGovno 08.10.2012 19:15 # 0
>WHERE sin(100500) <= 1.0
TarasB 09.10.2012 09:50 # 0
roman-kashitsyn 09.10.2012 10:01 # −1
wvxvw 10.10.2012 16:20 # +1
head asplodes.
bormand 08.10.2012 19:52 # +2
(и молимся, чтобы SQL считал это во флоатах, а не в децималах)
LispGovno 08.10.2012 20:19 # +2
TarasB 09.10.2012 09:51 # +1
bormand 09.10.2012 12:33 # 0
TarasB 09.10.2012 13:56 # +1
http://ideone.com/w6PRN
bormand 10.10.2012 05:39 # +1
http://ideone.com/BAPoe
LispGovno 10.10.2012 07:48 # −2
bormand 10.10.2012 08:49 # +2
Как 0.1, так и 0.2 и 0.3 это бесконечные двоичные дроби:
0.1 = 0.00(0011) = 0.0000110011...
0.2 = 0.00(0110) = 0.0001100110...
0.3 = 0.00(1001) = 0.0010011001...
Если складывать так - все ок:
0.0000110 + 0.0001100 = 0.0010010
Если же на один разряд больше - то фейл:
0.00001100 + 0.00011001 = 0.00100101
Если еще на один разряд больше - опять все ок:
0.000011001 + 0.000110011 = 0.001001100
LispGovno 10.10.2012 10:08 # −2
bormand 10.10.2012 11:00 # 0
> в то время, когда флоат ещё не расходится из-за большей дискретности (больше растояние между дискретами), то даубл уже поехал.
Не-не-не девид блейн. Дискретность и то что дабл длиннее флоата тут к делу совершенно не относится. Тут дело в точном количестве разрядов - если бы дабл был бы на разряд короче или длиннее - получился бы корректный ответ. А если флоат был бы на 1-2 разряда короче, лень считать на сколько именно, то он бы тоже глючил. Вот так.
DBdev 08.10.2012 19:18 # +3
А мне не бывает лениво сделать в склейке условий '<условие> AND ' и после всей цепочки сделать сабстринг или лефт без 5-ти символов последних.
Зато на выхлопе запрос - красота.
Но против 1=1 ничего не имею, техника неплохая.
Elvenfighter 08.10.2012 20:47 # +2
eth0 09.10.2012 12:01 # +1
Нужен какой-то форматтер, который будет это учитывать. А не изобретать велосипед.
virtual_cia 08.10.2012 21:43 # −2
Почему просто не написать "SELECT * FROM `xxx` WHERE 1; " или "SELECT * FROM `zzz` WHERE 0; " или "SELECT * FROM `xxx` WHERE true; "
или просто "SELECT * FROM `xxx`"?
В данном случае "where 0!=0 or catid = 2" равносильно "SELECT * FROM `xxx` where catid = 2".
На кой здесь вычисления и сравнения?
bormand 08.10.2012 22:25 # +1
Так точно, Кэп.
virtual_cia 08.10.2012 22:34 # 0
LispGovno 08.10.2012 22:36 # 0