Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2025 (17.x) Preview
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric Preview
In dit artikel worden reguliere expressies voor SQL Server geïntroduceerd.
Note
Omdat het om een preview-functie gaat, is de technologie die in dit artikel wordt behandeld onderhevig aan de Aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews.
Een reguliere expressie of regex is een reeks tekens waarmee een zoekpatroon voor tekst wordt gedefinieerd. Regex wordt vaak gebruikt voor verschillende taken, waaronder patroonkoppeling, gegevensvalidatie, gegevenstransformatie en query's. Het biedt een flexibele en efficiënte manier om complexe gegevensbewerkingen te doorzoeken, bewerken en afhandelen.
Note
Reguliere expressies zijn beschikbaar in Azure SQL Managed Instance met de updatebeleid van SQL Server 2025 of het altijd-bijgewerktupdatebeleid.
Deze implementatie van reguliere expressies is gebaseerd op de re2-bibliotheek voor reguliere expressies. Ga voor meer informatie naar RE2 Reguliere Expressiesyntaxis.
Ondersteunde regex-functies:
| Function | Description |
|---|---|
| REGEXP_LIKE | Retourneert een Booleaanse waarde die aangeeft of de tekstinvoer overeenkomt met het regex-patroon. |
| REGEXP_REPLACE | Retourneert een gewijzigde brontekenreeks die is vervangen door een vervangende tekenreeks, waarbij het exemplaar van het regex-patroon is gevonden. |
| REGEXP_SUBSTR | Extraheert delen van een tekenreeks op basis van een normaal expressiepatroon. Retourneert Nth-exemplaar van een subtekenreeks die overeenkomt met het regex-patroon. |
| REGEXP_INSTR | Retourneert de begin- of eindpositie van de overeenkomende subtekenreeks, afhankelijk van de opgegeven optie. |
| REGEXP_COUNT | Retourneert een telling van het aantal keren dat het regex-patroon voorkomt in een tekenreeks. |
| REGEXP_MATCHES | Retourneert een tabel met vastgelegde subtekenreeksen die overeenkomen met een normaal expressiepatroon met een tekenreeks. Als er geen overeenkomst wordt gevonden, retourneert de functie geen rij. |
| REGEXP_SPLIT_TO_TABLE | Retourneert een tabel met tekenreeksen gesplitst, gescheiden door het regex-patroon. Als het patroon niet overeenkomt, retourneert de functie de tekenreeks. |
Reguliere expressies kunnen bestaan uit letterlijke tekens en metatekens, die speciale betekenissen en functies hebben.
Een eenvoudige reguliere expressie is één letterlijk teken. Tekens komen overeen met zichzelf, met uitzondering van de metatekens. Metacharacters omvatten*, , +?, (, , )of |. Als u een metacharacter wilt vergelijken, escapet u deze met een backslash. Komt bijvoorbeeld \* overeen met het letterlijke sterretje (*).
Twee reguliere expressies kunnen worden gewijzigd of samengevoegd om een nieuwe reguliere expressie te vormen: als e1 overeenkomt met s en e2 overeenkomt met t, dan e1 | e2 komt overeen met s of t en e1 e2 komt overeen met st.
De metatekens *, +en ? zijn herhalingsoperatoren: e1* komt overeen met een reeks nul of meer (mogelijk andere) tekenreeksen, die elk overeenkomen met e1; e1 + komt overeen met een of meer; e1? komt overeen met nul of één.
Operatorprioriteit, van zwakste tot sterkste binding, is als volgt: - Alternation - Samenvoeging - Herhalingsoperatoren
Expliciete haakjes kunnen worden gebruikt om verschillende betekenissen af te dwingen, zoals in rekenkundige expressies. Enkele voorbeelden: ab|cd is gelijk aan (ab)|(cd) ; ab is gelijk aan a(b).
Zie voor meer informatie over de syntaxis van de reguliere expressie die door RE2 wordt geaccepteerd
RE2 Syntaxis voor reguliere expressies. Deze pagina bevat ook een aantal syntaxis die wordt geaccepteerd door PCRE, Perl en Vim.
Geaccepteerde reguliere expressietekens
Expressies met één teken
| Soorten expressies met één teken | Examples |
|---|---|
| elk teken, mogelijk inclusief nieuwe regel (s=true) | . |
| character class | [xyz] |
| negatieve tekenklasse | [^xyz] |
| Perl-tekenklassen | \d |
| negatieve Perl tekenklasse | \D |
| ASCII-tekenklassen | [[:alpha:]] |
| "negatieve ASCII-tekenklasse" | [[:^alpha:]] |
| Unicode-tekenklasse (naam van één letter) | \pN |
| Unicode-tekenklasse | \p{Greek} |
| Negatieve Unicode-tekenklasse (éénletterige naam) | \PN |
| niet-geklasseerde Unicode-tekenklasse | \P{Greek} |
| Composieten | Description |
|---|---|
xy |
x gevolgd door y |
x | y |
x of y (liever x) |
| Herhalingen | Description |
|---|---|
x* |
nul of meer x, liever meer |
x+ |
een of meer x, liever meer |
x? |
nul of één x, liever één |
x{n,m} |
n of n+1 of ... of m x, liever meer |
x{n,} |
n of meer x, liever meer |
x{n} |
precies n x |
x*? |
nul of meer x, liever minder |
x+? |
een of meer x, liever minder |
x?? |
nul of één x, geeft de voorkeur aan nul |
x{n,m}? |
n of n+1 of ... of m x, liever minder |
x{n,}? |
n of meer x, liever minder |
x{n}? |
precies n x |
Note
De telformulieren x{n,m}, x{n,}en x{n} weigeren formulieren die een minimum- of maximumaantal herhalingen boven 1000 maken. Onbeperkte herhalingen zijn niet onderhevig aan deze beperking.
Perl-tekenklassen
De volgende tabel bevat momenteel ondersteunde Perl-tekenklassen.
| Perl-tekenklassen (alle ASCII-only) | Description |
|---|---|
\d |
cijfers ( [0-9]) |
\D |
geen cijfers ( [^0-9]) |
\s |
witruimte ( [\t\n\f\r ]) |
\S |
niet witruimte ( [^\t\n\f\r ]) |
\w |
woordtekens ( [0-9A-Za-z_]) |
\W |
geen woordtekens ( [^0-9A-Za-z_]) |
ASCII-tekenklassen
De volgende tabel bevat momenteel ondersteunde ASCII-tekenklassen.
| ASCII-tekenklassen | Description |
|---|---|
[[:alnum:]] |
alfanumeriek ( [0-9A-Za-z]) |
[[:alpha:]] |
alfabetisch ( [A-Za-z]) |
[[:ascii:]] |
ASCII ( [\x00-\x7F]) |
[[:blank:]] |
leeg ( [\t ]) |
[[:cntrl:]] |
controle ( [\x00-\x1F\x7F]) |
[[:digit:]] |
cijfers ( [0-9]) |
[[:graph:]] |
grafisch ( [!-~] of [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]) |
[[:lower:]] |
kleine letter ( [a-z]) |
[[:print:]] |
afdrukbaar ( [ -~] of [ [:graph:]]) |
[[:punct:]] |
interpunctie ( [!-/:-@[-\``{-~]) |
[[:space:]] |
witruimte ( [\t\n\v\f\r ]) |
[[:upper:]] |
hoofdletters ( [A-Z]) |
[[:word:]] |
woordtekens ( [0-9A-Za-z_]) |
[[:xdigit:]] |
hex-cijfer ( [0-9A-Fa-f]) |
Letterlijke tekens
- Letters
- Numbers
- Symbols
Lege tekenreeksen
| Lege tekenreeksen | Description |
|---|---|
^ |
Aan het begin van tekst of regel (m=true) |
$ |
Aan het einde van de tekst (zoals \z, niet \Z) of regel (m=true) |
\A |
Aan het begin van tekst |
\b |
Bij ASCII woordgrens (\w aan de ene kant en \W, \Aof \z aan de andere kant) |
\B |
Niet bij ASCII-woordgrens |
\z |
Aan het einde van de tekst |
Groupings
De capture-groep (subexpressie) van het patroon met:
| Groepering | Description |
|---|---|
(re) |
Genummerde opnamegroep (submatch) |
(?P<name>re) |
Benoemde en genummerde opnamegroep (submatch) |
(?:re) |
Niet-vastleggende groep |
(?<flags>) |
Instellen <flags> binnen de huidige groep; niet vastleggen |
(?<flags>:re) |
Instellen <flags> tijdens re; niet-vastleggen van groepering |
Flags
Gebruik vlaggen om het gedrag van de expressie te wijzigen. Voorbeeld:
| Flag | Description |
|---|---|
i |
Hoofdlettergevoelig (standaard false) |
m |
Modus met meerdere regels: ^ en $ begin-/eindregel vergelijken naast begin-/eindtekst (standaard false) |
s |
Laten . overeenkomen \n (standaard false) |
c |
Hoofdlettergevoelig (standaard true) |
Deze implementatie ondersteunt de POSIX-standaard van reguliere expressies na RE2 en biedt ondersteuning voor de pcRE/PCRE2-variant van de syntaxis van reguliere expressies, die compatibel is met de meeste moderne reguliere expressie-engines en hulpprogramma's. Er zijn verschillende varianten van reguliere expressies, zoals POSIX, ANSI, Perl en PCRE, die verschillende syntaxis en functies hebben. Zie RE2, een reguliere expressiebibliotheek, voor meer informatie over ondersteunde constructies en het gedrag van de onderliggende regex-engine.
Note
Reguliere expressiekoppelingen in SQL Server voldoen niet aan SQL-sorteringen voor taalkundige vergelijkingen. Dit gedrag is standaard en consistent met de meeste reguliere expressie-engines, omdat het overeenkomen gebeurt op basis van het patroon en Unicode-tekeneigenschappen in plaats van sorteringsregels. Als gevolg hiervan kan dit leiden tot verschillen in gedrag in vergelijking met andere tekenreeksvergelijkingsfuncties zoals LIKE, met name op geïndexeerde kolommen met taalspecifieke sorteringen.
Requirements
- Een SQL-clienthulpprogramma, zoals Azure Data Studio, SQL Server Management Studio of Visual Studio Code.
- Basiskennis van SQL-syntaxis en query's.
- Basiskennis van de syntaxis en concepten van reguliere expressies.
FAQ
Wat is de invloed op de prestaties van het gebruik van regex?
Regex-query's kunnen invloed hebben op de prestaties, afhankelijk van de complexiteit van het regex-patroon, de grootte van de tekstgegevens en het aantal betrokken rijen. U kunt het uitvoeringsplan en de statistieken gebruiken om de prestaties van uw regex-query's te bewaken en te optimaliseren.
Bekende problemen, gedrag en beperkingen
Dit zijn de items die momenteel niet worden ondersteund in deze preview:
- LOB-gegevenstypen (varchar(max) of nvarchar(max))
string_expressionsworden ondersteund in de volgende intrinsieke functies:REGEXP_LIKEREGEXP_COUNTREGEXP_INSTR
Deze ondersteuning is echter beperkt tot invoergrootten tot 2 MB.
- LOB-gegevenstypen worden niet ondersteund in de volgende regex-functies:
REGEXP_REPLACEREGEXP_SUBSTRREGEXP_MATCHESREGEXP_SPLIT_TO_TABLE
- Reguliere expressiefuncties worden niet ondersteund in systeemeigen gecompileerde opgeslagen procedures.