О вреде Википедии и логических операциях с NULL в PostgreSQL

Feb 21, 2009 21:04

Вчера полчаса смотрел на свой, написанный с месяц назад, запрос, не в состоянии понять, почему он работает. Ступор наступал при взгляде на конструкцию COUNT(имя_столбца OR NULL). А где-то в глубинах сознания гулко звучало: «Любая операция с NULL, кроме операции сравнения, в результате даёт NULL, независимо от значения прочих операндов».

Выясняя, откуда взялась эта убеждённость, вышел на статью из Википедии. Вот что значит в полуобморочном состоянии забивать свою голову новыми знаниями…

Так вот: неправда это. В PostgreSQL (да и в MySQL) TRUE OR NULL = TRUE, а FALSE AND NULL = FALSE! И конструкция мне нужна была, чтобы посчитать значения TRUE, а все FALSE обратить в NULL, кои COUNT'ом не считаются.

Вопросы, а почему нельзя было TRUE'шность поля вынести в условие, не принимаются. Нельзя. Строки с FALSE в этом поле в этом запросе тоже нужны, для других целей.

mysql, Википедия, postgresql

Previous post Next post
Up