sql >> Database >  >> RDS >> Mysql

Records selecteren zonder NULL-waarden in MySQL

Hoewel de meeste applicaties een of andere vorm van server-side of zelfs client-side technologie zullen hebben die kan worden gebruikt om databasequeryresultaten uit te filteren die NULL kunnen bevatten of lege waarden, een andere taal gebruiken en die extra last van het uitvoeren van code is doorgaans duurder voor de server en in feite grotendeels onnodig.

In plaats daarvan zullen we hieronder kort onderzoeken hoe we de MySQL-engine zelf kunnen gebruiken om deze taak uit te voeren, waarbij we alleen records pakken die u wenst en die met vervelende NULL uitsluiten kolommen in de mix.

IS GEEN NULL vergelijkingsoperator

Veruit de eenvoudigste en meest rechttoe rechtaan methode om ervoor te zorgen dat de resultatenset van een bepaalde kolom geen NULL bevat waarden is om de IS NOT NULL . te gebruiken vergelijkingsoperator.

Als we bijvoorbeeld alle records in onze books willen selecteren, tabel waarin de primary_author kolom is niet NULL , kan de zoekopdracht er als volgt uitzien:

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

Aangezien IS NOT NULL gedraagt ​​zich net als elke andere comparator, het kan worden gecombineerd met andere WHERE clausules om de resultaten verder te filteren, net alsof u = . gebruikt , > , < , LIKE en andere standaard vergelijkingsoperatoren.

NULL filteren uit meerdere kolommen

In sommige gevallen wilt u misschien resultaten ophalen waar nee NULL waarden zijn aanwezig in meerdere kolommen. We hebben bijvoorbeeld enkele records in de books tafel:

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

Houd er rekening mee dat The Doors of Stone (id 5 ) is niet gepubliceerd en daarom is de published_date is NULL . Evenzo, Beowulf (id 6 ) – het beroemde Oud-Engelse epische gedicht – heeft geen bekende auteur, dus primary_author is NULL .

In dit geval willen we misschien zoeken naar resultaten die alleen de eerste vier . bevatten records, waardoor de laatste twee records met NULL . worden uitgesloten waarden in een van beide primary_author of published_date . Dit kan worden uitgevoerd met deze eenvoudige instructie met behulp van AND met meerdere vergelijkingsoperatoren:

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

Opmerking:de haakjes zijn niet vereist, maar het is een goede gewoonte om gegroepeerde vergelijkers in te sluiten voor een betere leesbaarheid.

Daar heb je het; een eenvoudige vergelijkingsoperator die kan worden gebruikt om alle NULL . uit te filteren waarden in uw administratie.


  1. 5 beste online cursussen om MySQL te leren

  2. Databaseschema, automatisch verhogen

  3. Hoe verschillende waarden in SQL te tellen

  4. SIN() Voorbeelden in SQL Server