Поиск по сайту:
taxor.ruБлог — MySQL: бесцветный автомобиль – теоретически может быть автомобилем любого цвета

MySQL: бесцветный автомобиль – теоретически может быть автомобилем любого цвета

Секция: Сайтостроение и WEB-разработка

Просмотров: 76

Комментариев нет — ваш комментарий может стать первым

С довольно любопытной особенностью запросов MySQL (над которой пришлось изрядно поломать голову) впервые за всю практику столкнулся сегодня: оказывается, поле со значением NULL MySQL-таблицы не проходит сравнительную проверку на значение, невзирая на то, что не содержит вообще никакого значения. Простой пример этого казуса будет выглядеть так: предположим, из трёх автомобилей – красного, синего и зелёного цвета – вам необходимо выбрать все не красные автомобили, в результате чего вы получите автомобили синего и зелёного цвета, но если одним из автомобилей в наборе окажется бесцветный автомобиль – то при выборе всех автомобилей не красного цвета вы его не получите. Логика здесь, по всей видимости, такова: невозможно провести сравнение свойства некоей сущности, если данная сущность вообще не обладает этим свойством как таковым, а потому – не удовлетворяя условию – она не удовлетяворяет и отрицанию этого же условия. Другими словами: можно ли однозначно утверждать, что бесцветный автомобиль – не красный, если у него в принципе отсутствует какой-либо цвет? Нет, отвечает MySQL, нельзя, потому что для того чтобы быть не красным – автомобиль должен быть другого цвета, а цвета у него нет вовсе. Возвращаясь же к практической разработке – решить эту проблему мне удалось, лишь добавив в запрос дополнительное условие, согласно которому  …или значение поля может быть IS NULL.

Комментарии

добавить комментарий

комментариев не найдено — ваш может стать первым!


© «Таксор». Интернет-мастерская М. Ю. Уткина.