COALESCE, NULLIF en ISNULL
Standaardwaarden invullen en het verschil tussen COALESCE en leveranciersspecifieke functies begrijpen
COALESCE, NULLIF en ISNULL is een gratis Voorbereiding op programmeerinterviews-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Voorbereiding op programmeerinterviews. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.
Waarden voor NULL vervangen
Nu je NULL kunt herkennen, is de volgende interviewvaardigheid het vervangen ervan door een zinvolle standaardwaarde. Het portabele, gestandaardiseerde hulpmiddel hiervoor is COALESCE.
Daarnaast maak je kennis met NULLIF, dat de andere kant op werkt door een specifieke waarde in NULL te veranderen, en met de leveranciersfuncties ISNULL (SQL Server) en IFNULL (MySQL), die kandidaten vaak verwarren met COALESCE.
Weten waarin deze precies van elkaar verschillen, vooral wat het aantal argumenten en het retourtype betreft, is een veelgestelde vraag tijdens selectiegesprekken.
Basisprincipes van COALESCE
COALESCE accepteert een willekeurig aantal argumenten en geeft de eerste waarde die niet NULL is terug, waarbij de argumenten van links naar rechts worden doorlopen. Als alle argumenten NULL zijn, geeft de functie NULL terug.
De functie is een ANSI-standaard en werkt op elke belangrijke database. Daarom zou dit je standaardantwoord moeten zijn. Gebruik COALESCE om terugvalwaarden te geven voor weergave, berekeningen of groepering.
-- Show 0 instead of NULL for missing bonuses
SELECT name, COALESCE(bonus, 0) AS bonus
FROM employees;
-- Multiple fallbacks, first non-NULL wins
SELECT COALESCE(mobile_phone, home_phone, 'no phone') AS contact
FROM customers;COALESCE gebruikt kortsluitevaluatie
Een nuance waar interviewers naar vragen: COALESCE evalueert conceptueel de argumenten van links naar rechts en stopt bij de eerste waarde die niet NULL is. Daardoor is een latere, dure expressie niet nodig zodra een eerdere expressie een resultaat oplevert.
In de praktijk kunnen optimalisaties in sommige database-engines toch alle argumenten direct evalueren. Vertrouw er dus niet op om fouten zoals delen door nul af te vangen. De voorrang van links naar rechts bij het bepalen welke waarde wint, is wel gegarandeerd.
-- Prefer the manual override, else the computed value,
-- else a constant default
SELECT COALESCE(manual_price, list_price * 1.1, 9.99) AS price
FROM products;COALESCE en het gegevenstype van het resultaat
Een subtiele valkuil: het gegevenstype van een COALESCE-resultaat wordt bepaald door de typeprioriteit van al zijn argumenten samen, niet alleen door het eerste argument. Het combineren van incompatibele typen kan fouten of onverwachte afkapping veroorzaken.
COALESCE op een kolom met gehele getallen en een tekstuele standaardwaarde kan bijvoorbeeld mislukken of tot een impliciete conversie leiden, afhankelijk van de database-engine. Interviewers gebruiken dit om te testen of je ook over gegevenstypen nadenkt.
-- Risky: integer column with a string fallback
-- may error or force a cast depending on dialect
SELECT COALESCE(score, 'N/A') FROM tests;
-- Safer: keep the fallback type-compatible, or cast explicitly
SELECT COALESCE(CAST(score AS VARCHAR), 'N/A') FROM tests;ISNULL (SQL Server) versus COALESCE
SQL Server heeft ISNULL(expr, replacement). Deze functie lijkt op COALESCE, maar verschilt op belangrijke punten die interviewers graag vergelijken:
- Aantal argumenten: ISNULL accepteert precies twee argumenten; COALESCE accepteert er meerdere.
- Retourtype: ISNULL gebruikt het type van het eerste argument, waardoor de vervangende waarde kan worden afgekapt. COALESCE gebruikt de gecombineerde typeprioriteit.
- Portabiliteit: ISNULL is alleen beschikbaar in SQL Server; COALESCE is een ANSI-standaard.
Advies om hardop te geven: geef de voorkeur aan COALESCE vanwege de portabiliteit en voorspelbare typering.
-- SQL Server: ISNULL may truncate the replacement to
-- the first argument's type (e.g. CHAR(1))
SELECT ISNULL(code, 'UNKNOWN') FROM items;
-- If code is CHAR(1), 'UNKNOWN' becomes 'U'
-- COALESCE picks the wider type and keeps 'UNKNOWN'
SELECT COALESCE(code, 'UNKNOWN') FROM items;IFNULL en NVL
Andere dialecten hebben hun eigen verkorte notaties met twee argumenten:
- MySQL / SQLite:
IFNULL(expr, replacement) - Oracle:
NVL(expr, replacement), plusNVL2voor een variant met then/else
Alle drie gedragen zich als een COALESCE met twee argumenten. Als specifiek naar de MySQL- of Oracle-notatie wordt gevraagd, noem deze dan; kies anders voor COALESCE.
-- MySQL
SELECT IFNULL(bonus, 0) FROM employees;
-- Oracle
SELECT NVL(bonus, 0) FROM employees;
-- NVL2(bonus, 'has bonus', 'no bonus') -> if/else on NULLNULLIF: de tegenovergestelde richting
NULLIF(a, b) geeft NULL terug wanneer a = b; anders geeft de functie a terug. De functie maakt bewust een NULL, precies het tegenovergestelde van COALESCE.
De bekendste toepassing is bescherming tegen delen door nul. Zet de noemer in NULLIF(denominator, 0): als de noemer nul is, wordt de deler NULL en levert de hele deling NULL op in plaats van een fout te veroorzaken.
-- Avoid divide-by-zero: returns NULL instead of erroring
SELECT revenue / NULLIF(orders, 0) AS avg_order_value
FROM daily_stats;
-- NULLIF(5, 5) -> NULL
-- NULLIF(5, 3) -> 5NULLIF en COALESCE combineren
Deze twee werken uitstekend samen. Een klassieke éénregelige interviewoplossing is: ‘veilige deling die 0 toont wanneer er geen bestellingen zijn’. Gebruik NULLIF om de fout te vermijden en vervolgens COALESCE om de ontstane NULL te vervangen.
Deze compacte notatie laat zien dat je beide aspecten beheerst: je handelt het randgeval en de presentatie af in één expressie.
SELECT
COALESCE(revenue / NULLIF(orders, 0), 0) AS avg_order_value
FROM daily_stats;
-- orders = 0 -> NULLIF gives NULL -> division gives NULL
-- -> COALESCE turns it into 0Lege tekenreeksen als NULL behandelen
Een andere praktische toepassing van NULLIF is lege tekenreeksen omzetten in NULL, zodat je ze op dezelfde manier kunt aanvullen. Vervuilde gegevens bevatten vaak zowel NULL als ''; hiermee normaliseer je beide.
Lees het patroon als: ‘als de waarde leeg is, maak er NULL van en gebruik daarna een standaardwaarde’. Dit is een helder, portabel antwoord op de vraag: ‘Hoe behandel je lege en ontbrekende waarden op dezelfde manier?’
-- Treat both '' and NULL as missing, default to 'Anonymous'
SELECT COALESCE(NULLIF(TRIM(username), ''), 'Anonymous')
FROM users;Diepgaander voorbeeld: waarden over JOINs heen aanvullen
Na een LEFT JOIN leveren niet-overeenkomende rijen NULL-waarden aan de rechterkant op. COALESCE zet die om in betekenisvolle standaardwaarden in de uitvoer, een zeer veelvoorkomende rapportagevereiste.
Hier blijven klanten zonder bestellingen zichtbaar dankzij LEFT JOIN en wordt hun totaal als 0 weergegeven in plaats van als NULL. Door te vermelden dat COALESCE na de JOIN plaatsvindt en niet erin, laat je zien dat je de evaluatievolgorde begrijpt.
SELECT
c.name,
COALESCE(SUM(o.amount), 0) AS total_spent
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.name;
-- Customers with no orders get 0 instead of NULLPunten om te noemen in het interview
Samenvatting van de hulpmiddelen voor vervanging:
- COALESCE(a, b, ...): eerste waarde die niet NULL is, meerdere argumenten, ANSI-standaard, type op basis van prioriteit. Standaardkeuze.
- ISNULL / IFNULL / NVL: verkorte notaties van leveranciers met twee argumenten; ISNULL kan afkappen op het gegevenstype van het eerste argument.
- NULLIF(a, b): geeft NULL terug wanneer de waarden gelijk zijn; uitstekend voor bescherming tegen delen door nul en voor het normaliseren van lege tekenreeksen.
- Combineer
COALESCE(x / NULLIF(y, 0), 0)voor een veilige, goed presenteerbare deling.
Begin met COALESCE en noem varianten van leveranciers alleen wanneer het dialect vaststaat.
Korte controle
Kies de veilige delingsexpressie.
Samenvatting
Je kunt nu NULL-waarden vervangen en maken:
- COALESCE geeft de eerste waarde die niet NULL is van meerdere argumenten terug; dit is de portabele standaardkeuze.
- ISNULL (SQL Server), IFNULL (MySQL) en NVL (Oracle) zijn verkorte notaties met twee argumenten; ISNULL kan afkappen op het gegevenstype van het eerste argument.
- NULLIF(a, b) geeft NULL terug wanneer de twee waarden gelijk zijn en is ideaal voor bescherming tegen delen door nul en voor het normaliseren van lege tekenreeksen.
- Combineer deze functies voor veilige, goed presenteerbare expressies en om NULL-waarden na een LEFT JOIN van standaardwaarden te voorzien.
Laatste les: hoe NULL zich gedraagt in aggregaties, JOINs en DISTINCT.
Leer Voorbereiding op programmeerinterviews met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 90
- Lessen
- 360
Veelgestelde vragen
Is de les “COALESCE, NULLIF en ISNULL” gratis?
Ja — de volledige tekst van “COALESCE, NULLIF en ISNULL” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Voorbereiding op programmeerinterviews wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.
Wat leer ik in “COALESCE, NULLIF en ISNULL”?
Standaardwaarden invullen en het verschil tussen COALESCE en leveranciersspecifieke functies begrijpen Je oefent met Voorbereiding op programmeerinterviews door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Voorbereiding op programmeerinterviews te beginnen?
Ervaring vooraf is niet nodig. Voorbereiding op programmeerinterviews op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “COALESCE, NULLIF en ISNULL”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Voorbereiding op programmeerinterviews?
Ja. Elke les over Voorbereiding op programmeerinterviews bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Driewaardige logica en UNKNOWN
- IS NULL, IS NOT NULL en NULL-veilige gelijkheid
- COALESCE, NULLIF en ISNULL
- NULL's in aggregaties, joins en DISTINCT