Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

Как проверить есть ли NULL в списке?

#mysql #sql


Добрый день. Подскажите как проверить наличие NULL в списке?
Например есть список 

2016-09-01
2016-09-02
NULL
2016-09-05


Как проверить есть ли в списке NULL, но сделать это надо в блоке SELECT без WHERE!
    


Ответы

Ответ 1



SELECT SUM(IF(pole IS NULL, 1, 0)) count_null FROM table Если count_null > 0, то в таблице есть NULL Работает следующим способом: Аггрегирующая функция SUM складывает все значения которая выдает функция IF и выдает одну строку по всем записям в таблице (аггрегирующая функция всегда выдает одну запись на всю таблицу ну или на группу) IF(pole IS NULL, 1, 0) - Если pole равно NULL, тогда вернуть 1, если не равно, тогда вернуть 0. Так вот, эта конструкция перебирает построчно таблицу, берет каждую строку и если есть NULL, то IF выдает значение 1 и SUM суммирует по сути количество NULL в таблице по всем строкам.

Ответ 2



Для проверки значения на NULL существует специальная конструкция IS NULL (и IS NOT NULL). Можно воспользоваться ей SELECT IF(fld IS NULL, '1', fld) FROM tbl Кроме того, существует стандартная функция COALESCE(), которая принимает произвольное количество аргументов и возвращает первое не NULL-значение. К ней тоже часто прибегают, чтобы присвоить NULL-значениям какое-то другое значение SELECT COALESCE(fld, '1') FROM tbl

Ответ 3



select count(1)-count(date) from table Даст количество NULL значений в колонке date. Работает за счет того, что функция count() считает количество НЕ NULL значений в колонке. count(1) даст общее количество записей в таблице, count(date) количество НЕ NULL. В отличии от IF работает на любых SQL базах.

Комментариев нет:

Отправить комментарий