Home » Functies in SQL: manipuleer eenvoudig je kolomwaardes

Functies in SQL: manipuleer eenvoudig je kolomwaardes

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

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