sql >> Database teknologi >  >> RDS >> Mysql

Sådan vælger du poster uden NULL-værdier i MySQL

Mens de fleste applikationer vil have en eller anden form for serverside- eller endda klientsideteknologi, der kan bruges til at bortfiltrere databaseforespørgselsresultater, som kan indeholde NULL eller tomme værdier, ved at bruge et andet sprog, og den ekstra byrde ved at udføre kode er typisk dyrere for serveren og faktisk stort set unødvendig.

I stedet vil vi nedenfor kort udforske, hvordan man bruger selve MySQL-motoren til at udføre denne opgave, idet vi kun griber de poster, du ønsker, mens vi ekskluderer dem med irriterende NULL kolonner i blandingen.

ER IKKE NULL sammenligningsoperatør

Langt den enkleste og mest ligetil metode til at sikre, at en bestemt kolonnes resultatsæt ikke indeholder NULL værdier er at bruge IS NOT NULL sammenligningsoperatør.

For eksempel, hvis vi ønsker at vælge alle poster i vores bøger tabel, hvor primary_author kolonne er ikke NULL , kan forespørgslen se sådan ud:

VÆLG primær_forfatter, publiceringsdato, titelFRA bøger, HVOR primær_forfatter IKKE ER NULL; 

Da Ikke ER NULL opfører sig ligesom enhver anden komparator, den kan kombineres med andre WHERE klausuler for at filtrere resultater yderligere, ligesom hvis du brugte = , > , < , LIKE og andre standard sammenligningsoperatører.

Filtrering af NULL fra flere kolonner

I nogle tilfælde ønsker du måske at hente resultater, hvor nej NULL værdier er til stede på tværs af flere kolonner. For eksempel har vi nogle poster i bøgerne tabel:

id | titel | primær_forfatter | offentliggjort_dato1 | Hobbitten | Tolkien | 21-09-19372 | Silmarillion | Tolkien | 15-09-19773 | Vindens navn | Rothfuss | 27-03-20074 | Den vise mands frygt | Rothfuss | 03-01-2015 | Dørene af sten | Rothfuss | NULL6 | Beowulf | NULL | 01-01-1000

Bemærk, at Stendørene (id 5 ) er upubliceret og derfor published_date er NULL . Tilsvarende Beowulf (id 6 ) – det berømte oldengelske episke digt – har ingen kendt forfatter, så primary_author er NULL .

I dette tilfælde vil vi muligvis forespørge efter resultater, der kun indeholder de første fire poster, og derved ekskluderer de sidste to poster, som har NULL værdier i enten primary_author eller publiceret_dato . Dette kan udføres med denne simple sætning ved hjælp af AND med flere sammenligningsoperatorer:

VÆLG primær_forfatter, publiceringsdato, titelFRA bøger WHERE (primær_forfatter ER IKKE NULL OG publiceringsdato ER IKKE NULL); 

Bemærk:Parenteserne er ikke påkrævet, men det er god praksis at vedlægge grupperede komparatorer for bedre læsbarhed.

Der har du det; en simpel sammenligningsoperator, der kan bruges til at filtrere enhver NULL fra værdier i dine optegnelser.


  1. Hvad svarer til varchar(max) i Oracle?

  2. Sådan får du adgang til MySQL med MySQL-rodbrugeren

  3. Konverter en dato til en anden tidszone i SQL Server

  4. Migration fra Oracle Database til MariaDB - A Deep Dive