Strings trimmen in C# en SQL

TrimmerAls je met gegevens aan de slag bent tijdens het ontwikkelen, zal je zien dat de datakwaliteit nogal eens een uitdaging vormt. Een veel voorkomende situatie is dat de tekst die je aangeleverd krijgt, voorloop spaties kent of spaties achter de string, die je liever niet wilt zien. Deze zijn eenvoudig te verwijderen met het Trim commando. Wanneer je data aan het importeren bent vanuit een aantal bronnen, kan het handig zijn de spaties (o.a.) meteen te trimmen, zodat je zeker weet dat je met schone data werkt. Een kleine instructie strings trimmen in C# en SQL.

C#: Trim()

Voor het trimmen van een string in C# is een method aanwezig. Deze is zeer gemakkelijk te gebruiken. Zie het volgende voorbeeld:

using System;

namespace Demo {
class Program {
static void Main(string[] args) {

string strExample = "  This is a string.  ";
Console.WriteLine(strExample);

strExample = strExample.Trim();
Console.WriteLine(strExample);
}
}
}

Dit levert het volgende resultaat op:

Trim_Result

SQL Server

In SQL Server is het helaas net iets minder gemakkelijk: een algemene Trim fucntie is er niet. Er bestaan wel twee op zichzelf staande functies: RTRIM voor het trimmen van de rechterkant van de string, en LTRIM voor de voorloop spaties. Deze twee functies zijn wel weer te nesten, waardoor het volgende uitstekend werkt:

DECLARE @Example	nvarchar(255)
SET @Example = '   Dit is een string.  '
SELECT @Example
SET @Example = LTRIM(RTRIM(@Example))
SELECT @Example

Dit levert het volgende resultaat op (helaas vanwege de opmaak ietsje lastiger zichtbaar, maar goed):

Trim_Result

Op deze manier kun je dus relatief eenvoudig je strings ontdoen van onnodige spaties voor en na de string.

Uiteraard zijn er nog vele andere aspecten die meespelen bij het vergroten van de datakwaliteit van je gegevens. Ik zal hier later meer over publiceren.

2 thoughts on “Strings trimmen in C# en SQL

  1. Je voorbeeldje gaat goed met data vanaf de command prompt, maar kan ernstige fouten opleveren bij geimporteerde data die null-waarden bevat. Dit kan je op diverse manieren ondervangen, bijvoorbeeld: strExample = strExample == null ? null : strExample.Trim();

    Tweede kanttekening: type-prefixing is soooo 90’s.

    1. Hi! Dank voor de reactie! Mijn idee was om vooral te focussen op het trimmen en allerlei validatie even achterwege te laten. Maar NULL waarden zijn inderdaad altijd een uitdaging, op meerdere vlakken. Daar is een artikel op zichzelf aan te wijden 🙂

      Wat betreft het type-prefixing, tja, ik weet dat dit VS6 guidelines zijn (ik zie overigens in een C# / VS2003 boek ook nog een complete tabel met type prefixes staan), maar het zit er zo ingeramd dat ik het eigenlijk automatisch doe. Terwijl het inderdaad niet (meer) echt nodig is. Ah well…

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.