Докато повечето приложения ще имат някаква форма на технология от страна на сървъра или дори от страна на клиента, която може да се използва за филтриране на резултатите от заявките за база данни, които може да съдържат NULL
или празни стойности, като се използва друг език и тази допълнителна тежест за изпълнение на код обикновено е по-скъпа за сървъра и всъщност до голяма степен е ненужна.
Вместо това по-долу ще разгледаме накратко как да използваме самия MySQL двигател за изпълнение на тази задача, като грабваме само записи, които желаете, като изключваме тези с досаден NULL
колони в микса.
НЕ Е NULL Оператор за сравнение
Безспорно най-простият и ясен метод за гарантиране, че наборът от резултати на конкретна колона не съдържа NULL
стойности е да се използва IS NOT NULL
оператор за сравнение.
Например, ако искаме да изберем всички записи в нашите книги
таблица, където primary_author
колонане е NULL
, заявката може да изглежда така:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
primary_author IS NOT NULL;
Тъй като НЕ Е NULL
се държи като всеки друг компаратор, може да се комбинира с друг WHERE
клаузи за допълнително филтриране на резултатите, точно както ако използвате =
, >код> ,
<
, Харесвам
и други стандартни оператори за сравнение.
Филтриране на NULL от множество колони
В някои случаи може да пожелаете да извлечете резултати, когато не NULL
стойностите присъстват в множество колони. Например, имаме някои записи в книгите
таблица:
id | title | primary_author | published_date
1 | The Hobbit | Tolkien | 09-21-1937
2 | The Silmarillion | Tolkien | 09-15-1977
3 | The Name of the Wind | Rothfuss | 03-27-2007
4 | The Wise Man's Fear | Rothfuss | 03-01-2011
5 | The Doors of Stone | Rothfuss | NULL
6 | Beowulf | NULL | 01-01-1000
Обърнете внимание, че Каменните врати (id 5
) е непубликуван и следователно published_date
е NULL
. По същия начин Беоулф (id 6
) – известната староанглийска епична поема – няма известен автор, така че primary_author
е NULL
.
В този случай може да поискаме да поискаме резултати, съдържащи само първите четири записи, като по този начин се изключват последните два записа, които имат NULL
стойности в primary_author
или публикувана_дата
. Това може да се извърши с този прост израз с помощта на AND
с множество оператори за сравнение:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
(
primary_author IS NOT NULL
AND
published_date IS NOT NULL
);
Забележка:Скобите не са задължителни, но е добра практика да се включват групирани компаратори за по-добра четливост.
Ето го; прост оператор за сравнение, който може да се използва за филтриране на всички NULL
стойности във вашите записи.