Patroonkoppeling en tekstextractie

Voltooid

SQL Server 2025 voegt nieuwe reguliere expressiefuncties (REGEXP) toe en verbetert de SUBSTRING functie om het werken met gestructureerde tekst te vereenvoudigen. Met deze toevoegingen kunnen ontwikkelaars flexibele tekstzoekopdrachten uitvoeren, complexe patronen extraheren en gegevens rechtstreeks in T-SQL opschonen of transformeren zonder gebruik te maken van scripts aan de clientzijde of CLR-functies.

Overzicht van functies voor patroonkoppeling en tekstextractie

De nieuwe REGEXP-serie functies ondersteunt de evaluatie van reguliere expressies rechtstreeks in SQL Server. Elke functie maakt specifieke tekstbewerkingen op basis van patronen mogelijk.

REGEXP_LIKE

Controleert of een tekenreeks overeenkomt met een normaal expressiepatroon. Retourneert 1 als deze overeenkomt, 0 anders.

REGEXP_SUBSTR

Extraheert de eerste subtekenreeks die overeenkomt met een normaal expressiepatroon. Handig voor het ophalen van specifieke informatie, zoals telefoonnummers, datums of e-mailadressen.

REGEXP_REPLACE

Zoekt in een tekenreeks naar een patroon en vervangt alle exemplaren die overeenkomen met het patroon. Deze kan worden gebruikt voor het opschonen en opmaken van gegevens.

REGEXP_INSTR

Retourneert de beginpositie van de eerste subtekenreeks die overeenkomt met het patroon in de opgegeven tekst. Ideaal voor het vinden van belangrijke markeringen in gestructureerde tekst.

REGEXP_COUNT

Telt het aantal overeenkomsten van een reguliere expressiepatroon in een bepaalde tekenreeks. Dit aantal is handig wanneer u de patroonfrequentie moet meten, zoals het tellen van cijfers, woorden of symbolen in tekst.

REGEXP_MATCHES

Retourneert alle subtekenreeksen die overeenkomen met een normaal expressiepatroon als tabelresultaat. Gebruik deze functie wanneer u meerdere opslag van één tekenreeks nodig hebt in plaats van alleen de eerste overeenkomstige.

REGEXP_SPLIT_TO_TABLE

Splitst een tekenreeks in meerdere rijen met behulp van een scheidingsteken voor reguliere expressies.

Uitbreiding Deelreeks

De SUBSTRING functie ondersteunt nu een optionele lengteparameter. Wanneer u dit weglaat, wordt automatisch uit de opgegeven beginpositie naar het einde van de tekenreeks geëxtraheerd, waardoor handmatige LENGTE()-berekeningen minder nodig zijn.

Met deze mogelijkheden kunt u tekstpatronen rechtstreeks in SQL Server 2025 zoeken, extraheren en bewerken met beknopte, leesbare T-SQL.


Voorbeeldscenario: Contactgegevens extraheren en opschonen

Een marketingteam onderhoudt een database met klantberichten in een kolom met de naam MessageText. Veel vermeldingen bevatten telefoonnummers in verschillende indelingen. U moet het eerste telefoonnummer extraheren uit elk bericht, het normaliseren naar een standaardindeling en berichten identificeren die ongeldige telefoonnummers bevatten.

Voorbeeldgegevens

Stel dat u de volgende voorbeeldgegevens hebt in een tabel met de naam CustomerMessages:

MessageID Berichttekst
1 Bel me op (713) 555-1298 of op kantoor 555-8811.
2 "Neem contact met mij op: +1-832-555-7821 bedankt!"
3 "Mijn nummer is 713-555-9876 ext. 33"
4 "Er staat nog geen telefoon vermeld."

Query: Identificeren, extraheren en standaardiseren

-- Extract the first phone number pattern and format it consistently
SELECT MessageID,
       REGEXP_SUBSTR(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}') AS RawNumber,
       REGEXP_REPLACE(
           REGEXP_SUBSTR(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}'),
           '\D', ''
       ) AS DigitsOnly,
       CASE 
           WHEN REGEXP_LIKE(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}') = 1 THEN 'Valid'
           ELSE 'Missing'
       END AS PhoneStatus
FROM dbo.CustomerMessages;

Results

MessageID RawNumber DigitsOnly PhoneStatus
1 (713) 555-1298 7135551298 Geldig
2 +1-832-555-7821 18325557821 Geldig
3 713-555-9876 7135559876 Geldig
4 NUL NUL Vermist

In dit voorbeeld wordt het eerste overeenkomende patroon geëxtraheerd REGEXP_SUBSTR , REGEXP_REPLACE om niet-numerieke tekens te verwijderen en REGEXP_LIKE geldige getallen te verifiëren. De query standaardiseert telefoonnummers in een consistente indeling met alleen cijfers rechtstreeks in T-SQL.


Voorbeeld 2: Data splitsen met REGEXP_SPLIT_TO_TABLE en SUBSTRING

Stel dat een andere tabel, CustomerFeedback, door komma's gescheiden tags opslaat die de interesses van klanten beschrijven. U wilt ze scheiden in afzonderlijke rijen en het eerste trefwoord extraheren voor snelle indexering.

SELECT FeedbackID,
       value AS Tag,
       SUBSTRING(value, 1) AS FirstWord
FROM CustomerFeedback
CROSS APPLY REGEXP_SPLIT_TO_TABLE(Tags, '\s*,\s*');

Met deze query wordt elke door komma's gescheiden tekenreeks gesplitst in rijen terwijl het nieuwe SUBSTRING gedrag (zonder lengte op te geven) wordt gebruikt om de volledige resterende tekst uit de beginpositie te extraheren.

Results

FeedbackID Tag FirstWord
1 reizen reizen
1 fotografie fotografie
2 wandelen wandelen
2 kamperen kamperen

Samenvatting

De nieuwe REGEXP-functies en de verbeterde SUBSTRING-functie in SQL Server 2025 bieden native mogelijkheden voor patroonherkenning en tekstextractie. Deze toevoegingen elimineren de noodzaak voor externe tekenreeksverwerking, waardoor het eenvoudiger is om tekstuele gegevens in de database-engine op te schonen, te parseren en te analyseren. Met deze hulpprogramma's kunnen ontwikkelaars ETL-pijplijnen vereenvoudigen, de gegevenskwaliteit verbeteren en geavanceerde tekstgestuurde analyses rechtstreeks in T-SQL inschakelen.