SQL Academy · leksjon

NULL: den tredje sannhetsverdien

Bli fortrolig med betydningen av NULL, hvorfor NULL ikke er lik noe som helst (ikke engang seg selv), og hvordan treverdi-logikk påvirker WHERE-uttrykk.

Leksjon 3 av 413 trinn

NULL: den tredje sannhetsverdien er en gratis leksjon i SQL Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i SQL Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i SQL Academy inneholder totalt 4 leksjoner.

Hva er NULL?

NULL representerer ukjente eller manglende data. Det er ikke null, ikke en tom streng og ikke usann. Det er det uttrykkelige fraværet av en verdi.

NULL er ikke lik noe som helst (ikke engang seg selv)

Dette er regelen som forvirrer alle:

SELECT NULL = NULL;       -- NULL (not true!)
SELECT NULL = 0;          -- NULL
SELECT NULL = '';        -- NULL
SELECT NULL <> 1;         -- NULL

Bruk IS NULL og IS NOT NULL

For å teste etter NULL må De bruke de spesielle predikatene IS NULL og IS NOT NULL:

SELECT email FROM users WHERE deleted_at IS NULL;       -- active users
SELECT email FROM users WHERE deleted_at IS NOT NULL;   -- deleted users

Trestegslogikk

SQLs boolske logikk har TRE verdier: TRUE, FALSE og UNKNOWN (NULL).

ABA AND BA OR B
TRUENULLNULLTRUE
FALSENULLFALSENULL
NULLNULLNULLNULL

WHERE forkaster rader der predikatet er NULL

Hvis WHERE x = 5 evalueres til NULL for en rad (fordi x er NULL), returneres ikke raden. Bare rader der predikatet er TRUE, beholdes.

-- Suppose age is NULL for some users:
SELECT * FROM users WHERE age >= 18;
-- Users with NULL age are NOT returned, even though we
-- don't actually know they're under 18.

Fellen med NOT IN og NULL

Denne spørringen returnerer NULL rader hvis et navn i underspørringen er NULL:

SELECT * FROM users
WHERE name NOT IN (SELECT excluded_name FROM blocklist);
-- If blocklist has a NULL row, the whole NOT IN evaluates to NULL
-- → no rows returned

-- Safer:
SELECT * FROM users u
WHERE NOT EXISTS (
  SELECT 1 FROM blocklist b WHERE b.excluded_name = u.name
);

COALESCE: Erstatt NULL med en standardverdi

COALESCE returnerer det første argumentet som ikke er NULL:

SELECT id, COALESCE(full_name, email, 'Anonymous') AS display_name
FROM users;

-- If full_name is NULL, use email; if that's NULL too, use 'Anonymous'.

NULLIF: Det motsatte

NULLIF(a, b) returnerer NULL når a = b, ellers a. Dette er nyttig for å behandle spesielle verdier som '' eller 0 som NULL.

SELECT NULLIF(price, 0) FROM products;
-- Returns NULL when price is 0, useful for AVG() that should ignore zeros.

NULL i aggregatfunksjoner

Aggregatfunksjoner (unntatt COUNT(*)) hopper over NULL-inndata:

-- Suppose:  prices = [10, 20, NULL, 30]
SELECT COUNT(*)     FROM products;  -- 4 (counts rows)
SELECT COUNT(price) FROM products;  -- 3 (counts non-NULL prices)
SELECT AVG(price)   FROM products;  -- 20  (60 / 3, not 60 / 4)
SELECT SUM(price)   FROM products;  -- 60

Sortering av NULL

Som standard sorterer PostgreSQL NULL-verdier sist ved stigende sortering og først ved synkende sortering. De kan overstyre dette:

SELECT * FROM users ORDER BY last_login_at DESC NULLS LAST;

Lagre NULL kontra tom streng

Avgjør for hver kolonne: Er '' en gyldig verdi? Hvis ikke, bruker De NULL for å bety «ingen verdi». Hvis ja, betyr NULL noe annet (for eksempel «ikke spurt ennå»).

Vær konsekvent – ikke bland begge deler i samme kolonne.

Oppsummering

NULL er sin egen sannhetsverdi.

  • Test med IS NULL, aldri = NULL
  • WHERE-filtre beholder bare rader som er TRUE
  • Aggregatfunksjoner hopper over NULL-inndata
  • COALESCE er Deres venn

Rask kontroll

Hva returnerer SELECT NULL = NULL;?

Gratis å komme i gang

Lær deg SQL med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
46
Leksjoner
183

Ofte stilte spørsmål

Er leksjonen «NULL: den tredje sannhetsverdien» gratis?

Ja – hele teksten i «NULL: den tredje sannhetsverdien» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av SQL Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i SQL Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «NULL: den tredje sannhetsverdien»?

Bli fortrolig med betydningen av NULL, hvorfor NULL ikke er lik noe som helst (ikke engang seg selv), og hvordan treverdi-logikk påvirker WHERE-uttrykk. Du øver på SQL Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med SQL Academy?

Ingen tidligere erfaring er nødvendig. SQL Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «NULL: den tredje sannhetsverdien»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne SQL Academy-leksjonen?

Ja. Alle SQL Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Hva et RDBMS er, og hvorfor tabeller er viktige
  2. Primærnøkler og unikhet
  3. NULL: den tredje sannhetsverdien
  4. Oversikt over datatyper: INT VARCHAR DATE BOOLEAN
← Tilbake til SQL Academy