Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Gäller för: SQL Server 2025 (17.x) Förhandsversion 
Azure SQL Database
Azure SQL Managed Instance
Förhandsversion av SQL-databas för Microsoft Fabric
Den här artikeln introducerar reguljära uttryck för SQL Server.
Note
Som en förhandsgranskningsfunktion omfattas tekniken som presenteras i den här artikeln av kompletterande användningsvillkor för Förhandsversioner av Microsoft Azure.
Ett reguljärt uttryck, eller regex, är en sekvens med tecken som definierar ett sökmönster för text. Regex används ofta för en mängd olika uppgifter, inklusive mönstermatchning, datavalidering, datatransformering och frågor. Det erbjuder ett flexibelt och effektivt sätt att söka, manipulera och hantera komplexa dataåtgärder.
Note
Reguljära uttryck är tillgängliga i Azure SQL Managed Instance med sql Server 2025- eller always-up-to-date update-principen.
Den här implementeringen av reguljära uttryck baseras på re2-biblioteket för reguljära uttryck. Mer information finns i RE2-syntax för reguljära uttryck.
Regex-funktioner som stöds:
| Function | Description | 
|---|---|
| REGEXP_LIKE | Returnerar ett booleskt värde som anger om textinmatningen matchar regex-mönstret. | 
| REGEXP_REPLACE | Returnerar en modifierad källsträng som ersätts av en ersättningssträng, där förekomsten av regex-mönstret hittades. | 
| REGEXP_SUBSTR | Extraherar delar av en sträng baserat på ett mönster för reguljära uttryck. Returnerar Nth-förekomsten av en delsträng som matchar regex-mönstret. | 
| REGEXP_INSTR | Returnerar start- eller slutpositionen för den matchade delsträngen, beroende på vilket alternativ som anges. | 
| REGEXP_COUNT | Returnerar antalet gånger som regexmönstret inträffar i en sträng. | 
| REGEXP_MATCHES | Returnerar en tabell med insamlade delsträngar som matchar ett reguljärt uttrycksmönster med en sträng. Om ingen matchning hittas returnerar funktionen ingen rad. | 
| REGEXP_SPLIT_TO_TABLE | Returnerar en tabell med delade strängar, avgränsade med regex-mönstret. Om det inte finns någon matchning i mönstret returnerar funktionen strängen. | 
Reguljära uttryck kan bestå av literaltecken och metakarakter, som har särskilda betydelser och funktioner.
Ett grundläggande reguljärt uttryck är ett enda bokstavligt tecken. Tecknen matchar sig själva, förutom metatecknen. Metakarakterare inkluderar *, +, ?, (, )eller |. Undvik det med ett omvänt snedstreck för att matcha ett metadiagram. Matchar till exempel \* bokstavligt asterisk-tecken (*).
Två reguljära uttryck kan ändras eller sammanfogas för att bilda ett nytt reguljärt uttryck: om e1 matchar s och e2 matchar t, matchar e1 | e2s eller t och e1e2 matchar st.
Metakaraktärerna *, +, och ? är upprepningsoperatorer: e1* matchar en sekvens med noll eller fler (möjligen olika) strängar, som var och en matchar e1; e1 + matchar en eller flera; e1? matchar noll eller ett.
Operatorprioretens, från den svagaste till starkaste bindningen, är följande: - Alternation - Sammanfogning - Repetitionsoperatorer
Explicita parenteser kan användas för att framtvinga olika betydelser, som i aritmetiska uttryck. Några exempel: ab|cd motsvarar (ab)|(cd) , ab motsvarar a(b).
Mer information om syntaxen för reguljära uttryck som godkänts av RE2 finns i
              RE2 Syntax för reguljära uttryck. På den här sidan visas även vissa syntaxer som godkänts av PCRE, Perl och Vim.
Godkända reguljära uttryckstecken
Uttryck med ett tecken
| Typer av uttryck med ett tecken | Examples | 
|---|---|
| alla tecken, eventuellt inklusive newline (s=true) | . | 
| character class | [xyz] | 
| negerad teckenklass | [^xyz] | 
| Perl-teckenklasser | \d | 
| Förnekad Perl-teckenklass | \D | 
| ASCII-teckenklasser | [[:alpha:]] | 
| negerad ASCII-teckenklass | [[:^alpha:]] | 
| Unicode-teckenklass (en bokstavsnamn) | \pN | 
| Unicode-teckenklass | \p{Greek} | 
| negerad Unicode-teckenklass (en bokstavsnamn) | \PN | 
| negerad Unicode-teckenklass | \P{Greek} | 
| Kompositer | Description | 
|---|---|
| xy | x följt av y | 
| x | y | x eller y (föredrar x) | 
| Upprepningar | Description | 
|---|---|
| x* | noll eller fler x, föredrar mer | 
| x+ | ett eller flera x, föredrar mer | 
| x? | noll eller ett x, föredrar en | 
| x{n,m} | n eller n+1 eller ... eller m x, föredrar mer | 
| x{n,} | n eller fler x, föredra fler | 
| x{n} | exakt n x | 
| x*? | noll eller fler x, föredrar färre | 
| x+? | ett eller flera x, föredrar färre | 
| x?? | noll eller ett x, föredrar noll | 
| x{n,m}? | n eller n+1 eller ... eller m x, föredrar färre | 
| x{n,}? | n eller mer x, föredrar färre | 
| x{n}? | exakt n x | 
Note
Räknarformulären x{n,m}, x{n,}och x{n} avvisar formulär som skapar ett minsta eller högsta antal upprepningar över 1 000. Obegränsade upprepningar omfattas inte av den här begränsningen.
Perl-teckenklasser
I följande tabell visas för närvarande perl-teckenklasser som stöds.
| Perl-teckenklasser (endast ASCII) | Description | 
|---|---|
| \d | siffror ( [0-9]) | 
| \D | inte siffror ( [^0-9]) | 
| \s | blanksteg ( [\t\n\f\r ]) | 
| \S | inte tomt utrymme ( [^\t\n\f\r ]) | 
| \w | ordtecken ( [0-9A-Za-z_]) | 
| \W | inte ordtecken ( [^0-9A-Za-z_]) | 
ASCII-teckenklasser
I följande tabell visas ascii-teckenklasser som stöds för närvarande.
| ASCII-teckenklasser | Description | 
|---|---|
| [[:alnum:]] | alfanumeriskt ( [0-9A-Za-z]) | 
| [[:alpha:]] | alfabetisk ( [A-Za-z]) | 
| [[:ascii:]] | ASCII ( [\x00-\x7F]) | 
| [[:blank:]] | blank ( [\t ]) | 
| [[:cntrl:]] | kontroll ( [\x00-\x1F\x7F]) | 
| [[:digit:]] | siffror ( [0-9]) | 
| [[:graph:]] | grafisk ( [!-~]eller[A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]) | 
| [[:lower:]] | gemener ( [a-z]) | 
| [[:print:]] | utskrivbar ( [ -~]eller[ [:graph:]]) | 
| [[:punct:]] | skiljetecken ( [!-/:-@[-\``{-~]) | 
| [[:space:]] | blanksteg ( [\t\n\v\f\r ]) | 
| [[:upper:]] | versaler ( [A-Z]) | 
| [[:word:]] | ordtecken ( [0-9A-Za-z_]) | 
| [[:xdigit:]] | hex-siffra ( [0-9A-Fa-f]) | 
Literaltecken
- Letters
- Numbers
- Symbols
Tomma strängar
| Tomma strängar | Description | 
|---|---|
| ^ | I början av text eller rad ( m=true) | 
| $ | I slutet av texten (till exempel \z, inte\Z) eller rad (m=true) | 
| \A | I början av texten | 
| \b | Vid ASCII-ordgräns ( \wpå ena sidan och\W,\Aeller\zpå den andra) | 
| \B | Inte vid ASCII-ordgräns | 
| \z | I slutet av texten | 
Groupings
Fångstgruppen (underuttryck) av mönstret med:
| Gruppering | Description | 
|---|---|
| (re) | Numrerad insamlingsgrupp (delmatchning) | 
| (?P<name>re) | Namngiven och numrerad insamlingsgrupp (delmatchning) | 
| (?:re) | Icke-fångande grupp | 
| (?<flags>) | Ange <flags>inom den aktuella gruppen; icke-fångande | 
| (?<flags>:re) | Ange <flags>underre; icke-fångande gruppering | 
Flags
Använd flaggor för att ändra uttrycksbeteendet. Till exempel:
| Flag | Description | 
|---|---|
| i | Skiftlägesokänsligt (standard false) | 
| m | Flerradsläge: ^och$matcha start-/slutlinje utöver start-/sluttext (standardfalse) | 
| s | Låt .matcha\n(standardfalse) | 
| c | Skiftlägeskänsligt (standard true) | 
Den här implementeringen stöder POSIX-standarden för reguljära uttryck efter RE2 och har stöd för PCRE/PCRE2-varianten av syntax för reguljära uttryck, som är kompatibel med de flesta moderna reguljära uttrycksmotorer och verktyg. Det finns olika varianter av reguljära uttryck, till exempel POSIX, ANSI, Perl och PCRE, som har olika syntax och funktioner. Mer information om konstruktioner som stöds och beteende för den underliggande regexmotorn finns i RE2, ett bibliotek för reguljära uttryck.
Note
Matchning av reguljära uttryck i SQL Server uppfyller inte SQL-sortering för språkjämförelser. Det här beteendet är avsiktligt och överensstämmer med de flesta reguljära uttrycksmotorer, eftersom matchning baseras på egenskaperna för mönster och Unicode-tecken i stället för sorteringsregler. Det kan därför leda till skillnader i beteende jämfört med andra strängjämförelsefunktioner som LIKE, särskilt för indexerade kolumner med språkspecifika sorteringar.
Requirements
- Ett SQL-klientverktyg, till exempel Azure Data Studio, SQL Server Management Studio eller Visual Studio Code.
- Grundläggande kunskaper om SQL-syntax och frågor.
- Grundläggande förståelse för syntax och begrepp för reguljära uttryck.
FAQ
Hur påverkas prestandan av att använda regex?
Regex-frågor kan ha en prestandapåverkan beroende på komplexiteten i regex-mönstret, storleken på textdata och antalet rader som ingår. Du kan använda exekveringsplanen och statistiken för att övervaka och optimera prestandan för dina regex-sökningar.
Kända problem, beteenden och begränsningar
Det här är de objekt som för närvarande inte stöds i den här förhandsversionen:
- LOB-datatyper (varchar(max) eller nvarchar(max)) för string_expressionsstöds i följande inbyggda funktioner:- REGEXP_LIKE
- REGEXP_COUNT
- REGEXP_INSTR
 
Det här stödet är dock begränsat till indatastorlekar på upp till 2 MB.
- LOB-datatyper stöds inte i följande regex-funktioner: - REGEXP_REPLACE
- REGEXP_SUBSTR
- REGEXP_MATCHES
- REGEXP_SPLIT_TO_TABLE
 
- Reguljära uttrycksfunktioner stöds inte i inbyggda kompilerade lagrade procedurer.