Iedere database engine beschikt over een eigen verzameling aan functies. Deze functies worden door de makers (bijvoorbeeld MySQL of MS SQL) ervan zelf gemaakt en kun je gebruiken in SQL-queries.
In SQL is er onderscheid te maken tussen twee soorten functies. Zo heb je aggregatiefuncties die een hele resultset gebruiken om iets mee te doen. Verder heb je functies om kolomwaarden te manipuleren.
Aggregratiefuncties
Aggregatiefuncties voeren berekeningen uit over een complete resultset. Onder deze noemer vallen functies zoals: AVG, COUNT, MAX, MIN en SUM. Let op dat alle functies behalve de COUNT NULL-waardes negeren.
Als we een van deze functies gebruiken en we selecteren daar andere kolommen bij dan moeten we deze resultset groeperen. Dit doen we met GROUP BY
.
SELECT COUNT(kolomnaam), kolomnaam2 FROM Tabelnaam GROUP BY kolomnaam
advertentie
Overzicht van functies in SQL
Naast de hierboven benoemde aggregatiefuncties zijn er ook andere functies in SQL. Deze kun je gebruiken om de kolomwaarde in de resultset aan te passen.
Zo is er bijvoorbeeld een functie om een waarde af te ronden, maar er zijn ook functies om de lettergrootte aan te passen.
UCASE() – Hoofdletters
Met de UCASE
functie zet je de waarde van de opgegeven kolom om naar hoofdletters.
SELECT UCASE(voornaam) FROM Klanten
LCASE() – Kleine letters
Met de LCASE
functie zet je de waarde van de geselecteerde kolom om naar kleine letters.
SELECT LCASE(voornaam) FROM Klanten
ROUND() – Afronden
Met de ROUND
functie kun je de waarde van de geselecteerde kolom afronden.
SELECT ROUND(orderbedrag) FROM Orders
In bovenstaande situatie wordt er afgerond naar een heel getal. Wil je specifieker afronden, dan kun je als tweede argumenten ook het aantal decimalen achter de komma opgeven.
SELECT ROUND(orderbedrag, 2) FROM Orders
CHAR_LENGTH() – Lengte van tekst
Met CHAR_LENGTH
bepaal je eenvoudig de lengte van de waarde in de kolom. Deze functie werkt prima in MySQL, voor Oracle gebruik je LENGTH
en in MS SQL gebruik je LEN
.
SELECT CHAR_LENGTH(achternaam) FROM Klanten
FIRST() – Eerste waarde
Met de FIRST
functie haal je de waarde van de gevraagde kolom op uit het eerste record in de tabel.
SELECT FIRST(achternaam) FROM Klanten
LAST() – Laatste waarde
Met de LAST
functie haal je de waarde van de gevraagde kolom op uit het laatste record in de tabel.
SELECT LAST(achternaam) FROM Klanten
SUBSTRING() – Haal een gedeelte op
De SUBSTRING
functie geeft een bepaald gedeelte van de waarde uit de geselecteerde kolom terug. De functie verwacht 3 argumenten: SUBSTRING(kolomnaam, start waarde, lengte)
SELECT SUBSTRING(voornaam, 2, 3) FROM Klanten
In het bovenstaande voorbeeld wordt de naam Andy gemanipuleerd naar ndy. Arnoldus wordt rno.
COALESCE() – Omgaan met NULL-waarden
Wanneer je een tabel opzet, kan het voorkomen dat een kolom NULL-waarden mag bevatten. Het omgaan met deze NULL-waarden kan soms uitdagend zijn bij het uitvoeren van queries. In dergelijke situaties komt COALESCE
van pas en biedt zo een elegante oplossing.
Deze functie accepteert meerdere parameters, waarmee je een standaardwaarde kunt specificeren voor het geval de veldwaarde NULL is. Een praktisch voorbeeld hiervan is het vervangen van een NULL-waarde door het woord ‘Onbekend’:
SELECT COALESCE(plaatsnaam, 'Onbekend') FROM Klanten
Door COALESCE
te gebruiken, wordt de flexibiliteit en robuustheid van gegevensqueries vergroot, waardoor meer controle over de resultaten ontstaat, vooral in situaties waarin de SQL-query moet omgaan met NULL-waarden.
Het gebruik van functies in SQL
In de meeste voorbeelden wordt vooral gebruik gemaakt van functies in de SELECT statement. Hier houdt het echter niet op. Functies mogen namelijk op verschillende plaatsen voorkomen. Dus bijvoorbeeld ook in de WHERE
of HAVING
clause.
We gebruiken de functie ROUND
ter illustratie in de voorbeelden hieronder.
In de SELECT
Als we een functie willen gebruiken in de SELECT
dan ziet dit er als volgt uit:
SELECT ROUND(kolomnaam) FROM Tabelnaam
In de WHERE
clause
Functies kunnen ook worden gebruikt in de WHERE
clause:
SELECT kolomnaam FROM Tabelnaam WHERE ROUND(kolomnaam)
In de HAVING
clause:
Als laatste voorbeeld laat ik je zien hoe je een functie in de HAVING
-clause kunt gebruiken.
SELECT kolomnaam FROM Tabelnaam HAVING ROUND(kolomnaam) > 10