SQL leren: Tekstfuncties
Tekst bewerken
"Waarom staan er twee soorten romans in mijn overzicht?" Sanne fronst. Iemand typte ooit `Roman` met een hoofdletter, een ander `roman` zonder. Tijd om tekst te leren temmen.
Functies op tekst
Een functie neemt een waarde en geeft er een nieuwe voor terug, per rij. UPPER zet tekst in hoofdletters, LOWER in kleine letters, en LENGTH telt de tekens.
De tabel zelf verandert niet: alleen het resultaat.
SELECT titel, UPPER(titel) AS luid, LENGTH(titel) AS tekens FROM boeken| titel | luid | tekens |
|---|---|---|
| De stille rivier | DE STILLE RIVIER | 16 |
| Nachtwacht in Brugge | NACHTWACHT IN BRUGGE | 20 |
| Het laatste licht | HET LAATSTE LICHT | 17 |
| Draken van het Noorden | DRAKEN VAN HET NOORDEN | 22 |
| Koken met restjes | KOKEN MET RESTJES | 17 |
| The Glass Harbour | THE GLASS HARBOUR | 17 |
| Zomer in Zeeland | ZOMER IN ZEELAND | 16 |
| De code van Mercator | DE CODE VAN MERCATOR | 20 |
Rommelige data rechtzetten
Voor SQLite zijn roman en Roman twee verschillende waarden. Groeperen op genre geeft daarom twee groepjes romans (onderaan zie je het probleem).
Groepeer je op LOWER(genre), dan vallen ze samen. Je mag een functie gewoon in GROUP BY gebruiken.
SELECT LOWER(genre) AS genre, COUNT(*) AS aantal FROM boeken GROUP BY LOWER(genre)| genre | aantal |
|---|---|
| fantasy | 3 |
| non-fictie | 3 |
| roman | 7 |
| strip | 2 |
| thriller | 5 |
SELECT genre, COUNT(*) AS aantal FROM boeken GROUP BY genre| genre | aantal |
|---|---|
| Roman | 2 |
| THRILLER | 1 |
| fantasy | 3 |
| non-fictie | 3 |
| roman | 5 |
| strip | 2 |
| thriller | 4 |
Plakken, knippen en poetsen
|| plakt tekst aan elkaar. SUBSTR(tekst, start, lengte) knipt er een stuk uit, te tellen vanaf 1. REPLACE(tekst, oud, nieuw) vervangt, en TRIM haalt spaties weg aan het begin en het einde.
Getallen mag je gewoon meeplakken: SQLite maakt er tekst van.
SELECT auteur || ': ' || titel AS etiket, SUBSTR(isbn, 1, 3) AS prefix, REPLACE(isbn, '-', '') AS zonder_streepjes FROM boeken| etiket | prefix | zonder_streepjes |
|---|---|---|
| Lies Verbeke: De stille rivier | 978 | 9789044110013 |
| Tom Janssens: Nachtwacht in Brugge | 978 | 9789044110020 |
| Ann De Wilde: Het laatste licht | 978 | 9789044110037 |
| Kris Maes: Draken van het Noorden | 978 | 9789044110044 |
| Sara Peeters: Koken met restjes | 978 | 9789044110051 |
| Emily Hart: The Glass Harbour | 978 | 9781840010068 |
| Lies Verbeke: Zomer in Zeeland | 978 | 9789044110075 |
| Tom Janssens: De code van Mercator | 978 | 9789044110082 |
Probeer het zelf
Maak etiketten voor de rekken. Toon per boek de titel met het jaar erachter tussen haakjes, bijvoorbeeld Het eiland (2011).
Klaar voor meer?
De volledige les heeft 6 oefeningen, van makkelijk naar uitdagend, met hints, punten en een reeks die je kan opbouwen.
Begin aan de les