- 1
CASE WHEN ((b.k_vts_pre = null) OR (b.k_vts_goz_pre = null) OR (b.k_vts_relative_pre = null)) THEN null ELSE (b.k_vts_pre + b.k_vts_goz_pre + b.k_vts_relative_pre)/3 END
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−155
CASE WHEN ((b.k_vts_pre = null) OR (b.k_vts_goz_pre = null) OR (b.k_vts_relative_pre = null)) THEN null ELSE (b.k_vts_pre + b.k_vts_goz_pre + b.k_vts_relative_pre)/3 END
Один наш сотрудник проявил старание, достойное лучшего применения. В PostgreSQL можно так сравнивать с NULL, если настройка transform_null_equals=on. Но, во-первых, она у нас, как и по умолчанию, off, а во-вторых, зачем вообще?
bormand 09.09.2013 17:58 # +2
Закат солнца руками :) Видимо автор не знал, что нулл отравляет почти все выражения, в которые он входит.
DBdev 09.09.2013 18:53 # +3
Сотрудник бОльшую часть времени работает с императивным языком, верно?
bormand 09.09.2013 19:05 # 0
Вы так говорите, как-будто в императивных языках такие гигантские одностроки это что-то хорошее ;)
DBdev 10.09.2013 10:10 # 0
torbasow 10.09.2013 08:22 # 0
eth0 09.09.2013 20:38 # +1
anonimb84a2f6fd141 09.09.2013 20:48 # +1
bormand 09.09.2013 21:04 # +1
В отличие от мускуля, в постгресе вся эта срань причудливость хотя бы по дефолту отключена...
Хотя я, на их месте, вообще не стал бы запиливать эту фичу. is null и is not null вполне достаточно.
Dummy00001 09.09.2013 23:52 # −1
у нас тут давеча где-то пол года назад была история с оракаклом. куче крутых бородатых дядек и матёрых теток, которые 10+ лет исключительно оракл хакают, понадобилось пара месяцев что бы "увидеть" написаный новичком `= null` вместо `is null`. но зато потом как рассмотрели, ржали ходили пол дня, остановится не могли. потому что важный баг, а кода кот наплакал и его весь почти все уже наизусть выучили. но все равно тормозили 2 месяца.
если даже ДБ девелоперы тормозят, которые ничего кроме (PL/)SQL не видят, то это хороший индикатор что это говно, а не фича. в конце концов, а зачем еще может быть нужно сравнение с магичской константой нулл?
defecate-plusplus 10.09.2013 00:21 # +3
или теперь будет да?
Dummy00001 10.09.2013 00:53 # 0
но так как правило джоины все равно идут по индексам, то там уже почти всегда прописан not null в любом слючае. практической проблемы не вижу.
defecate-plusplus 10.09.2013 01:18 # +1
Dummy00001 10.09.2013 01:23 # 0
или в чем вопрос/подкол?
defecate-plusplus 10.09.2013 01:50 # 0
select * from table where col1 <= 10
Dummy00001 10.09.2013 01:53 # 0
bormand 10.09.2013 07:43 # +1
a = null это не false. Это, емнип, ахуйбыегознал, для краткости обозначаемый NULL'ом, и трактуемый условными операторами как ложь :)
DBdev 10.09.2013 12:16 # 0
a = null => false
a <> null => false
в итоге выходит, что a ахуйбыегозналкаксравнить null (вот тут и выходит на сцену IS/IS NOT)
bormand 10.09.2013 12:23 # +1
DBdev 10.09.2013 13:59 # 0
"The actual typing of Unknown (distinct or not from NULL itself) varies between SQL implementations"
Ну т.е. таки да, зависит от СУБД.
bormand 10.09.2013 14:04 # +1
bormand 10.09.2013 12:29 # 0
> a <> null => false
А not (a = null) и not (a <> null)? :)
bormand 10.09.2013 12:36 # +2
blackhearted 10.09.2013 12:38 # −2
null != null => ?
DBdev 10.09.2013 14:05 # 0
Выхлоп будет 3
torbasow 10.09.2013 08:33 # 0
UPD: Упс! Вернулся к разбору того же запроса, и обнаружил, что тому же сотруднику и правда так уже показалось.
bormand 10.09.2013 09:16 # +1
Да там и так уже нелогичностей хватает... Вот берем к примеру постгрес с дефолтными настройками, и вот такую табличку: Выполняем запрос и получаем... сгруппированные NULL'ы. Т.е. все-таки NULL = NULL? :)
Теперь выполняем запрос и получем... что сумма NULL и 1 это 1. Т.е. все-таки NULL это 0? :)
torbasow 10.09.2013 10:54 # +1
Что касается суммы, то NULL’ы не принимаются за ноль, а просто исключаются из суммирования. Да, эффект тот же, и да, я полагаю это непоследовательным.
bormand 10.09.2013 11:18 # 0
А сумма пустого множества какого-то хрена равна NULL, а не 0, и приходится дописывать всякие nvl и coalesce. Для AVG от пустого множества NULL вполне логичен, но SUM то за что испортили? Авторы стандарта не признают математику :(
defecate-plusplus 10.09.2013 11:46 # +2
если бы sum(null, null, ...) была бы 0, то результат получится совсем другой
bormand 10.09.2013 12:10 # +1
Все строки с положительным значением колонки1 вместо пустого множества... Ну да, резонно.
Dummy00001 10.09.2013 13:36 # −2
во-первых: бля, тоже мне нашел что стандартом называть.
во-вторых: я ни разу не предлагал менять что либо кроме как `= null` и `<> null` сделать аналогами `is null` и `is not null`.
roskomgovno 11.08.2018 01:16 # 0
что не так с ISO/IEC 9075?
Dummy00001 11.08.2018 01:31 # 0
в добавок, есть такая достаточно распростаннёная парадигма, что если уже выложил денег за Оракакал/DB2/Sybase/этц, то грешно не пользоватся специальными фичами.
ЗЫ глубже не спрашивай - уже лет 15 не колупал и все забыл.
roskomgovno 11.08.2018 02:01 # 0
guest8 11.08.2018 06:48 # −999
roskomgovno 11.08.2018 07:17 # 0
Ты считаешь что сложность проекта обусловлена количеством записей в базе?
Типа если у тебя 10 записей то можно MySQL, а если 2000 то надо уже Oracle? Ты правда так думаешь?
bormand 11.08.2018 07:19 # 0
roskomgovno 11.08.2018 07:20 # 0
--А MySQL 10 000 записей выдержит?
--Выдержит
--А Postgres?
--Тоже
--А в чем тогда разница?
--В названии
Vasiliy 10.09.2013 14:50 # 0
bormand 10.09.2013 15:27 # 0
Не изменяет :) Зато там другой гадости полно. Типа or'а в виде ||.
Vasiliy 11.09.2013 15:10 # 0
defecate-plusplus 11.09.2013 15:13 # +2
eth0 11.09.2013 19:54 # 0
defecate-plusplus 11.09.2013 20:12 # +1
для следования стандартам есть стандарты
для всего остального есть мастеркард
torbasow 11.09.2013 20:23 # +1
anonimb84a2f6fd141 09.09.2013 21:14 # 0
bormand 09.09.2013 22:06 # 0
TarasB 10.09.2013 15:46 # +1
3.14159265 10.09.2013 16:21 # +1
Где Х - негативная характеристика обладателя оной точки зрения.Гоблача не предлагать.
Vindicar 11.09.2013 11:36 # +1
У него обычно "С точки зрения малолетнего долбоеба - безусловно".
3.14159265 11.09.2013 16:11 # +3
Vindicar 11.09.2013 20:43 # 0
bormand 10.09.2013 19:24 # +1
сишколеди
anonimb84a2f6fd141 10.09.2013 23:09 # +4
bormand 11.09.2013 05:42 # 0
3.14159265 11.09.2013 16:05 # +7
Вот уж средина близится,
А супервафела всё нет...
bormand 11.09.2013 16:26 # +6
kegdan 11.09.2013 07:03 # +3
Оп! Оп! Оп! Оп! Оп!
Процедурный стаил
eth0 11.09.2013 19:56 # +1
P.S. Не хочу устраивать священную войну на тему, почему надо ставить двоеточие и что значит символ "меньшебольше".
real_escape_string 08.08.2018 22:18 # 0
roskomgovno 09.08.2018 01:32 # 0
Проверять надо через
Причем во всех субд
guest8 09.08.2018 01:50 # −999
guest8 09.08.2018 01:54 # −999
roskomgovno 09.08.2018 02:35 # 0
guest8 09.08.2018 11:33 # −999
20_BLACK_CENTIMETERS 09.08.2018 12:19 # −1
roskomgovno 09.08.2018 13:11 # 0
guest8 09.08.2018 14:51 # −999
torbasow 09.08.2018 14:37 # 0