![]() ![]() | |
taxpert.ru — Блог — MySQL: бесцветный автомобиль – теоретически может быть автомобилем любого цветаMySQL: бесцветный автомобиль – теоретически может быть автомобилем любого цвета27.04.2022 Секция: Сайтостроение и WEB-разработка Просмотров: 192 Комментариев нет — ваш комментарий может стать первым С довольно любопытной особенностью запросов MySQL (над которой пришлось изрядно поломать голову) впервые за всю практику столкнулся сегодня: оказывается, поле со значением NULL MySQL-таблицы не проходит сравнительную проверку на значение, невзирая на то, что не содержит вообще никакого значения. Простой пример этого казуса будет выглядеть так: предположим, из трёх автомобилей – красного, синего и зелёного цвета – вам необходимо выбрать все не красные автомобили, в результате чего вы получите автомобили синего и зелёного цвета, но если одним из автомобилей в наборе окажется бесцветный автомобиль – то при выборе всех автомобилей не красного цвета вы его не получите. Логика здесь, по всей видимости, такова: невозможно провести сравнение свойства некоей сущности, если данная сущность вообще не обладает этим свойством как таковым, а потому – не удовлетворяя условию – она не удовлетяворяет и отрицанию этого же условия. Другими словами: можно ли однозначно утверждать, что бесцветный автомобиль – не красный, если у него в принципе отсутствует какой-либо цвет? Нет, отвечает MySQL, нельзя, потому что для того чтобы быть не красным – автомобиль должен быть другого цвета, а цвета у него нет вовсе. Возвращаясь же к практической разработке – решить эту проблему мне удалось, лишь добавив в запрос дополнительное условие, согласно которому – …или значение поля может быть IS NULL. Комментариидобавить комментарийкомментариев не найдено — ваш может стать первым! | |
© Taxpert. Интернет-мастерская М. Ю. Уткина. | |