Tekst manipulatie in SQL met Stuff()

Geschreven door: op maandag 30 december 2019

Leestijd:

In SQL heb je een aantal ingebouwde functies die erg handig kunnen zijn. Je kunt hier bijvoorbeeld denken aan Count(), welke het totaal aantal rijen teruggeeft van een query resultaat. Maar er zijn ook een aantal om tekst mee te manipuleren. In deze blog wil ik een specifieke functie uitlichten, namelijk Stuff().

Stuff

Met deze functie kun je een zin toevoegen binnen een andere zin. Het verwijderd een aantal opgegeven letters uit een zin en zal dan de tweede zin toevoegen bij het aangegeven startpunt. De syntax van de functie ziet er als volgt uit:

Stuff sql voorbeeld

Hier is de eerste parameter de zin waarbinnen een zin toegevoegd gaat worden, daarna volgt de start positie van de toe te voegen zin en als laatste volgt het aantal letters dat verwijderd moet worden vanaf de positie.
Let wel, als de startpositie buiten de zin ligt, dus deze is groter dan het aantal letters in de zin, dan zal het resultaat van de query NULL zijn. Dit geldt ook als de startpositie een negatieve waarde is, bijvoorbeeld -1. Als laatste, als de lengte van de te verwijderen letters langer is dan de zin dan zal de gehele zin verwijderd worden behalve de eerste letter. Daarna zal de tweede zin ingevoegd worden.

Hieronder een voorbeeld:
SQL stuff voorbeeld tabel

Dit levert het volgeden resultaat op:

Sql Stuff For XML

Je ziet dat de tweede zin is toegevoegd op positie 7. Daarnaast zie je dat er een komma is verwijderd, want er anders kwam er na de ‘zin in de zin’ nogmaals een komma.

Deze functie kan handig zijn als je bijvoorbeeld meerdere kolommen wilt samenvoegen naar 1 kolom. Een voorbeeld:

Stel, we hebben een tijdelijke tabel @temp met daarin enkele waarden:

SQL stuff en for XML resultaat

De laatste query in het voorbeeld geeft het volgende resultaat:

Stel, we willen hier van deze tabel één enkele rij maken waarin de waarden die in de kolom ‘tekst’ staan, allemaal in 1 kolom worden weergegeven, komma gescheiden. Dit doen we met behulp van de volgende query:

Hier maken we gebruik van Stuff() en For XML(). For XML() is een functionaliteit binnen SQL waarbij je resultaten van een query terug kunt geven als een XML. Lees hierover meer in deze blog.

Met de Stuff() functionaliteit neemt de query een ‘,’ en plakt daarachter de waarde die in de kolom tekst staat. Onze startpositie is 1, want we beginnen met een lege zin. Nu willen we de eerste komma niet meenemen en deze verwijderen. Dit doen we ook met behulp van Stuff(), waarbij we zeggen verwijder de eerste letter uit de zin, de komma. We willen verder ook geen zin toevoegen, de laatste parameter is dus ook leeg. Deze query geeft het volgende resultaat:

Mocht je meer willen leze over Stuff, dit kan door op een van de onderstaande links te klikken:

  1. https://www.w3schools.com/sql/func_sqlserver_stuff.asp
  2. https://docs.microsoft.com/en-us/sql/t-sql/functions/stuff-transact-sql?view=sql-server-ver15

Andere blogartikelen

Bel 072 5345 888
Meer dan 40 bedrijven vertrouwen op ons
Onze Middelen en Technologieën
microsoft silver partner
Adobe partner
fd-gazellen-2018.jpg
Google analytics
partners-logo.jpg
Op de hoogte blijven?

Meld u aan voor de gratis nieuwsbrief om op de hoogte te blijven van onze activiteiten