NULL: det tredje sanningsvärdet
Lär Er vad NULL betyder, varför NULL inte är lika med någonting (inte ens sig självt) och hur trevärd logik påverkar WHERE-satser.
NULL: det tredje sanningsvärdet är en gratis lektion i SQL Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för SQL Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i SQL Academy innehåller totalt 4 lektioner.
Vad är NULL?
NULL representerar okända eller saknade data. Det är inte noll, inte en tom sträng och inte false. Det är den uttryckliga frånvaron av ett värde.
NULL är inte lika med någonting (inte ens sig självt)
Det här är regeln som alla brukar snubbla på:
SELECT NULL = NULL; -- NULL (not true!)
SELECT NULL = 0; -- NULL
SELECT NULL = ''; -- NULL
SELECT NULL <> 1; -- NULLAnvänd IS NULL och IS NOT NULL
För att testa om ett värde är NULL måste du använda de särskilda predikaten IS NULL och 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 usersTre-värdeslogik
SQL:s booleska logik har TRE värden: TRUE, FALSE och UNKNOWN (NULL).
| A | B | A AND B | A OR B |
|---|---|---|---|
| TRUE | NULL | NULL | TRUE |
| FALSE | NULL | FALSE | NULL |
| NULL | NULL | NULL | NULL |
WHERE tar bort rader där predikatet är NULL
Om WHERE x = 5 utvärderas till NULL för en rad (eftersom x är NULL) returneras inte den raden. Endast rader där predikatet är TRUE behålls.
-- 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.NULL-fällan med NOT IN
Den här frågan returnerar NOLL rader om något namn i underfrågan är 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: ersätt NULL med ett standardvärde
COALESCE returnerar det första argumentet som inte är 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: motsatsen
NULLIF(a, b) returnerar NULL när a = b, annars a. Det är praktiskt när sentinelvärden som '' eller 0 ska behandlas som NULL.
SELECT NULLIF(price, 0) FROM products;
-- Returns NULL when price is 0, useful for AVG() that should ignore zeros.NULL i aggregat
Aggregatfunktioner (förutom COUNT(*)) hoppar över NULL-indata:
-- 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; -- 60Sortering av NULL
Som standard sorterar PostgreSQL NULL-värden sist i stigande ordning och först i fallande ordning. Du kan ändra detta:
SELECT * FROM users ORDER BY last_login_at DESC NULLS LAST;Lagra NULL eller en tom sträng
Avgör för varje kolumn: är '' ett giltigt värde? Om inte använder du NULL för att betyda "inget värde". Om ja betyder NULL något annat (till exempel "inte efterfrågat ännu").
Var konsekvent — blanda inte båda i samma kolumn.
Sammanfattning
NULL är ett eget sanningsvärde.
- Testa med
IS NULL, aldrig= NULL - WHERE-filter behåller endast rader som är TRUE
- Aggregat hoppar över NULL-indata
COALESCEär din vän
Snabbkontroll
Vad returnerar SELECT NULL = NULL;?
Lär dig SQL med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 46
- Lektioner
- 183
Vanliga frågor
Är lektionen ”NULL: det tredje sanningsvärdet” gratis?
Ja – hela texten till ”NULL: det tredje sanningsvärdet” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i SQL Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i SQL Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”NULL: det tredje sanningsvärdet”?
Lär Er vad NULL betyder, varför NULL inte är lika med någonting (inte ens sig självt) och hur trevärd logik påverkar WHERE-satser. Ni övar på SQL Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig SQL Academy?
Du behöver inga förkunskaper. Utbildningen i SQL Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”NULL: det tredje sanningsvärdet”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här SQL Academy-lektionen?
Ja. Varje SQL Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Vad ett RDBMS är och varför tabeller spelar roll
- Primärnycklar och unikhet
- NULL: det tredje sanningsvärdet
- Översikt över datatyper: INT VARCHAR DATE BOOLEAN