Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So wählen Sie Datensätze ohne NULL-Werte in MySQL aus

Während die meisten Anwendungen über irgendeine Form von serverseitiger oder sogar clientseitiger Technologie verfügen, die verwendet werden kann, um Datenbankabfrageergebnisse herauszufiltern, die NULL enthalten können oder leere Werte, die Verwendung einer anderen Sprache und diese zusätzliche Belastung durch die Ausführung von Code ist in der Regel kostspieliger für den Server und in der Tat weitgehend unnötig.

Stattdessen werden wir unten kurz untersuchen, wie Sie die MySQL-Engine selbst verwenden, um diese Aufgabe auszuführen, indem Sie nur die gewünschten Datensätze abrufen und diejenigen mit dem lästigen NULL ausschließen Spalten in der Mischung.

IST NICHT NULL Vergleichsoperator

Bei weitem die einfachste und unkomplizierteste Methode, um sicherzustellen, dass die Ergebnismenge einer bestimmten Spalte nicht NULL enthält Werten ist die Verwendung von IS NOT NULL Vergleichsoperator.

Zum Beispiel, wenn wir alle Datensätze in unseren books auswählen möchten Tabelle, in der der primary_author Spalte ist nicht NULL , könnte die Abfrage so aussehen:

SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;

Denn IS NOT NULL verhält sich wie jeder andere Komparator, er kann mit anderen WHERE kombiniert werden -Klauseln, um Ergebnisse weiter zu filtern, genau so, als ob Sie = verwenden würden , > , < , LIKE und andere Standard-Vergleichsoperatoren.

Filtern von NULL aus mehreren Spalten

In einigen Fällen möchten Sie möglicherweise Ergebnisse abrufen, bei denen nein NULL Werte sind in mehreren Spalten vorhanden. Zum Beispiel haben wir einige Aufzeichnungen in den books Tabelle:

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

Beachten Sie, dass The Doors of Stone (id 5 ) ist unveröffentlicht und daher das published_date ist NULL . Ebenso Beowulf (id 6 ) – das berühmte altenglische Epos – hat keinen bekannten Autor, also primary_author ist NULL .

In diesem Fall möchten wir möglicherweise nach Ergebnissen suchen, die nur die ersten vier enthalten Datensätze, wodurch die letzten beiden Datensätze ausgeschlossen werden, die NULL haben Werte entweder in primary_author oder published_date . Dies kann mit dieser einfachen Anweisung mit AND durchgeführt werden mit mehreren Vergleichsoperatoren:

SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  (
    primary_author IS NOT NULL
  AND
    published_date IS NOT NULL
  );

Hinweis:Die Klammern sind nicht erforderlich, aber es empfiehlt sich, gruppierte Komparatoren für eine bessere Lesbarkeit einzuschließen.

Hier hast du es; ein einfacher Vergleichsoperator, der verwendet werden kann, um alle NULL herauszufiltern Werte in Ihren Aufzeichnungen.