Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да ИЗБЕРЕТЕ записи без NULL стойности в MySQL

Докато повечето приложения ще имат някаква форма на технология от страна на сървъра или дори от страна на клиента, която може да се използва за филтриране на резултатите от заявките за база данни, които може да съдържат 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 стойности във вашите записи.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавите опция към sql_mode в MySQL, без да губите съществуващи настройки

  2. Как да импортирате база данни с помощта на phpMyAdmin

  3. Инсталиране на MySQL:ГРЕШКА:Неуспешно изграждане на родно разширение на gem

  4. MySQL SELECT само не нулеви стойности

  5. Може ли външен ключ да препраща към неуникален индекс?