Ga naar hoofdinhoud

SQL-stringfuncties: een gids voor beginners

Begrijp hoe je SQL-stringfuncties gebruikt om tekstgegevens efficiënt op te schonen en te verwerken.
· 7 min lezen

Verken met AI

Werken met relationele databases betekent vaak dat je met rommelige data te maken krijgt. Een van de meest voorkomende uitdagingen is het opschonen en verwerken van tekstgegevens. Gelukkig biedt SQL krachtige stringfuncties die dit proces veel efficiënter maken, zodat je tijd en moeite bespaart.

In dit artikel bekijken we de belangrijkste SQL-stringfuncties die je helpen om tekstgegevens eenvoudig op te schonen en te manipuleren. Laten we beginnen!

Wat zijn SQL-stringfuncties?

SQL-stringfuncties zijn ingebouwde functies waarmee we tekstgegevens die in een database zijn opgeslagen kunnen manipuleren en verwerken. Veelvoorkomende voorbeelden van tekstvelden zijn namen, beschrijvingen en adressen.

Met deze functies kun je een breed scala aan taken uitvoeren, waaronder:

  • Strings samenvoegen
  • Tekst opmaken
  • Delen van een string extraheren
  • Zoeken en specifieke tekst binnen een string vervangen

Strings samenvoegen in SQL

We kunnen twee of meer strings samenvoegen met de functie concat():

SELECT CONCAT('Street Roma',', ','72',', ','Padova') AS full_address

Dit is de output:

full_address           |
-----------------------+
Street Roma, 72, Padova|

Deze functie wordt vaak gebruikt om informatie uit verschillende kolommen te combineren, zoals namen en adressen.

Als alternatief kun je ook de functie CONCAT_WS() gebruiken:

SELECT CONCAT_WS(',','Street Roma','72','Padova') as full_address

Aan de syntaxis zie je dat dit makkelijker en efficiënter is in situaties waarin je meer dan twee kolommen met dezelfde scheidingsteken wilt combineren.

Tekst opmaken

Er zijn verschillende SQL-stringfuncties om tekst aan te passen door de lettergrootte te wijzigen, extra spaties te verwijderen en andere bewerkingen. Elke functie staat hieronder met de syntaxis en de bijbehorende beschrijving.

Functiesyntaxis

Beschrijving

LOWER(string)

Geeft de tekst terug met alle letters in kleine letters

UPPER(string)

Geeft de tekst terug met alle letters in hoofdletters

 TRIM(string, [character])

Verwijdert standaard spaties aan zowel de linker- als rechterkant van de string; verwijdert een opgegeven speciaal teken als dat is gespecificeerd

LTRIM(string, [character])

Verwijdert standaard spaties aan de linkerkant van de string; verwijdert een opgegeven speciaal teken als dat is gespecificeerd

RTRIM(string, [character])

Verwijdert standaard spaties aan de rechterkant van de string; verwijdert een opgegeven speciaal teken als dat is gespecificeerd

Laten we nu enkele voorbeelden bekijken om te begrijpen hoe je deze functies toepast. Stel dat je e-mailadressen met hoofdletters en een landcode in kleine letters hebt, en je het formaat van deze kolommen wilt corrigeren.

SELECT
		LOWER('[email protected]') AS email,
		UPPER('it') AS country

Dit is de bijbehorende output:

email              |country|
-------------------+-------+
anonymous@gmail.com|IT     |

Naast het wijzigen van hoofd-/kleine letters is het ook handig om spaties aan het begin of einde van strings te verwijderen. De primaire functie voor dit soort bewerkingen is TRIM() om aan beide kanten te verwijderen. Andere alternatieven zijn LTRIM() en RTRIM() om respectievelijk links en rechts spaties te verwijderen:

SELECT  TRIM(' Street Roma, 72 ') AS trimmed_address,
	  LTRIM(' Street Roma, 72 ') AS ltrimmed_address,
	  RTRIM(' Street Roma, 72 ') AS rtrimmed_address

De query geeft het volgende resultaat terug:

trimmed_address|ltrimmed_address|rtrimmed_address|
---------------+----------------+----------------+
Street Roma, 72|Street Roma, 72 | Street Roma, 72|

Uit de output kun je de verschillen tussen elke functie opmerken. Bovendien kan TRIM() ook worden toegepast om andere speciale tekens te verwijderen, naast spaties. Stel dat we het telefoonveld willen opschonen door het +‑teken te verwijderen:

SELECT TRIM('++345','+') AS telephone

De output is als volgt:

telephone|
---------+
345      |

Zoals je ziet is het telefoonnummer volledig opgeschoond.

Tekst extraheren

Na het samenvoegen en aanpassen van het formaat van strings is het tijd om te ontdekken hoe je tekst extraheert met de speciale SQL-functie SUBSTRING(). Laten we verschillende voorbeelden bekijken om deze functie onder de knie te krijgen:

SELECT
		SUBSTRING('Antony',1,1) AS first_character, 
		SUBSTRING('Antony',1,3) AS first_3characters,
		SUBSTRING('Antony',1,5) AS first_5characters

Dit is de output:

first_character|first_3characters|first_5characters|
---------------+-----------------+-----------------+
A              |Ant              |Anton            |

We kunnen deze functie ook combineren met de eerdere functies om het eerste teken te kapitaliseren, de rest van de letters naar kleine letters om te zetten en vervolgens alle letters te concatenaten:

SELECT
LENGTH('antony') AS lenght_name,
SUBSTRING(UPPER('antony'),1,1) AS first_character,
SUBSTRING(LOWER('antony'),2,LENGTH('antony')) AS  last_characters,
CONCAT(SUBSTRING(UPPER('antony'),1,1),SUBSTRING(LOWER('antony'),
      2,LENGTH('antony'))) AS name

Deze query geeft het volgende resultaat:

lenght_name|first_character|LAST_characters|name  |
-----------+---------------+---------------+------+
          6|A              |ntony          |Antony|

Naast de functies die we tot nu toe hebben gezien, zie je ook de functie LENGTH(), die helpt om de lengte van de string op te halen. In deze context is die handig om de index van het laatste teken te bepalen.

Zoeken en vervangen van strings in SQL

We laten de belangrijkste functies zien om te zoeken en te vervangen:

Functiesyntaxis

Beschrijving

REPLACE(string,x,y)

Vervangt de waarde x in de string door de waarde y

CHARINDEX(x,string)

Zoekt de positie van de waarde x binnen de string

Een zeer handige functie is REPLACE() om een substring binnen de string door een andere substring te vervangen:

SELECT
		'Street Roma - 32' AS address,
		replace('Street Roma - 32','-',',') AS cleaned_address

Dit is de output:

address         |cleaned_address |
----------------+----------------+
Street Roma - 32|Street Roma , 32|

In dit geval hebben we simpelweg een streepje vervangen door een komma binnen het adres. We kunnen ook de positie van het streepje binnen het adres proberen te vinden:

SELECT
		'Street Roma - 32' AS address,
		LENGTH('Street Roma - 32') AS length_address,
		CHARINDEX('-','Street Roma - 32') AS location_dash

De query geeft het volgende resultaat terug:

address         |length_address|location_dash|
----------------+--------------+-------------+
Street Roma - 32|            16|           13|

Je ziet dat het teken - op positie 13 in het adres staat, grotendeels aan het einde van de string.

Conclusie

Het beheersen van deze SQL-stringfuncties kan een groot verschil maken bij het efficiënt opschonen van data. Natuurlijk behandelt dit artikel niet alle functies, maar slechts een korte lijst met de belangrijkste. Niet alle SQL-functies zijn altijd overal geldig en kunnen verschillen per type database dat je gebruikt. Zo kan CHARINDEX in een MySQL-database worden vervangen door LOCATE().

Om met deze functies te oefenen, kun je onze Reporting in SQL-cursus bekijken. Die helpt je een expert te worden in het opschonen van data en het bouwen van complexe rapporten. We raden ook de SQL Fundamentals skill track aan om alle essentiële aspecten van SQL te behandelen.

Eugenia Anello

Auteur

Eugenia Anello

Data Scientist - CRIF

Onderwerpen

Gerelateerd