
Het case statement controleert of voldaan wordt aan een opgegeven conditie. Deze conditie kan worden opgegeven met behulp van een when, then voorwaarden. Wanneer de opgegeven conditie waar is, dan wordt een waarde teruggegeven. Wordt niet aan de conditie voldaan, dan gaat het case statement naar de volgende opgegeven when, then voorwaarde en controleert ook deze. Het case statemennt wordt beëindigd met een else statement. De waarde die hier wordt opgegeven, wordt teruggegeven wanneer aan geen van de when then cases wordt voldaan.
Dit klinkt vrij cryptisch misschien, maar laten we het aan de hand van een voorbeeldje eens bekijken. We gaan daarvoor uit van de tabel ‘CITY’ met onder andere de volgende gegevens.
1 2 3 4 5 6 7 8 9 10 |
ID Name CountryCode District Population ---- ---------- ----------- ------------------- ---------- 1 Kabul AFG Kabol 1780000 2 Qandahar AFG Qandahar 237500 8 Utrecht NLD Utrecht 234323 9 Eindhoven NLD Noord-Brabant 201843 180 Brugge BEL West Flanderi 116246 187 Porto-Novo BEN Ouémé 194000 3074 Dortmund DEU Nordrhein-Westfalen 590213 3077 Bremen DEU Bremen 540330 |
Met behulp van het case statement gaan we nu bewerkstelligen dat wanneer de CountryCode voldoet aan een opgegeven voorwaarde, niet de code maar de naam van het betreffende land wordt afgedrukt. Hiervoor voeren we devolgende SQL uit.
1 2 3 4 5 6 7 8 9 10 11 12 |
select ID, Name, CASE when CountryCode = 'NLD' then 'Nederland' when CountryCode = 'BEL' then 'Belgie' when CountryCode = 'DEU' then 'Duitsland' else CountryCode END as CountryCode, District, Population from CITY |
Het resultaat van deze selectie ziet er als onderstaande uit. Wanneer de CountryCode ‘NLD’, ‘BEL’ of ‘DEU’, dan drukken we niet de code af maar h de volledige naam van het land. Hiermee is dus meteen duidelijk wat het nut van het case statement is.
1 2 3 4 5 6 7 8 9 10 |
ID Name CountryCode District Population ---- ---------- ----------- ------------------- ---------- 1 Kabul AFG Kabol 1780000 2 Qandahar AFG Qandahar 237500 8 Utrecht Nederland Utrecht 234323 9 Eindhoven Nederland Noord-Brabant 201843 180 Brugge Belgie West Flanderi 116246 187 Porto-Novo BEN Ouémé 194000 3074 Dortmund Duitsland Nordrhein-Westfalen 590213 3077 Bremen Duitsland Bremen 540330 |
Uiteraard kan je in de when, then constructie naar believe voorwaarden opgeven om het resultaat naar je wens te maken.
Laat een reactie achter