Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL Database a Microsoft Fabricben
Ez a cikk az SQL Server rendszeres kifejezéseit ismerteti.
A reguláris kifejezés, vagy röviden regex, egy karaktersorozat, amely meghatározza a szöveg keresési mintázatát. A Regex-et gyakran használják különféle feladatokhoz, beleértve a mintaegyeztetést, az adatérvényesítést, az adatátalakítást és a lekérdezést. Rugalmas és hatékony módot kínál összetett adatműveletek keresésére, kezelésére és kezelésére.
Note
A reguláris kifejezések az SQL Server 2025 vagy always-up-todátumfrissítési szabályzattal rendelkező felügyelt Azure SQL-példányban érhetők el.
A reguláris kifejezés implementálása a RE2 reguláris kifejezéstáron alapul. További információ: RE2 Reguláris kifejezésszintaxis.
Támogatott regex függvények:
| Function | Description |
|---|---|
| REGEXP_LIKE | Logikai értéket ad vissza, amely azt jelzi, hogy a szövegbevitel megfelel-e a regex mintának. |
| REGEXP_REPLACE | Egy módosított forrássztringet ad vissza, amelyet helyettesítő sztring vált fel, ahol a regex minta előfordulása található. |
| REGEXP_SUBSTR | A sztring részeit egy reguláris kifejezésminta alapján nyeri ki. A regex mintának megfelelő alsztringek N-edik előfordulását adja vissza. |
| REGEXP_INSTR | A megadott beállítástól függően a megfeleltetett részsztring kezdő vagy záró pozícióját adja vissza. |
| REGEXP_COUNT | A regex minta sztringben való előfordulásának számát adja vissza. |
| REGEXP_MATCHES | Egy rögzített részsztring(ek) tábláját adja vissza, amely megfelel egy reguláris kifejezésmintának egy sztringgel. Ha nem található egyezés, a függvény nem ad vissza sort. |
| REGEXP_SPLIT_TO_TABLE | A regex mintával tagolt, felosztott sztringtáblát adja vissza. Ha nincs egyezés a mintával, a függvény visszaadja a sztringet. |
A reguláris kifejezések literális karakterekből és metacharacterekből állhatnak, amelyek speciális jelentéssel és funkcióval rendelkeznek.
Az alapszintű reguláris kifejezés egyetlen literális karakter. A karakterek önmagukkal egyeznek, kivéve a metacharactereket. A metakarakterek közé tartoznak *a következők: , +, ?, ()vagy |. Ha egy metacharactert szeretne egyezni, egy fordított perjellel meneküljön el. Például \* egyezik a literál csillag (*) karakterrel.
Két reguláris kifejezés módosítható vagy összefűzhető egy új reguláris kifejezés létrehozásához: ha az e1egyezések s és e2egyezések t, akkor e1 | e2egyezések s vagy t, e1e2 pedig st.
A metacharacterek *, +és ? ismétlési operátorok: e1* nulla vagy több (esetleg eltérő) sztring sorozatával egyezik, amelyek mindegyike megfelel az e1; e1 + egy vagy több; e1? nullának vagy egynek felel meg.
Az operátorok elsőbbsége a leggyengébbtől a legerősebb kötésig a következő: - Alternation - Concatenation - Repetition operátorok
Az explicit zárójelek különböző jelentéstartalmak kényszerítésére használhatók, mint az aritmetikai kifejezésekben. Néhány példa: ab|cd egyenértékű a (ab)|(cd) ; ab értékekkel a(b).
További információ a RE2 által elfogadott reguláris kifejezésszintaxisról:
RE2 Reguláris kifejezés szintaxisa. Ezen a lapon a PCRE, a Perl és a Vim által elfogadott szintaxis is szerepel.
Elfogadott reguláris kifejezéskarakterek
Egy karakterből álló kifejezések
| Egy karakterből álló kifejezések típusai | Examples |
|---|---|
| bármilyen karakter, beleértve az újsort is (s=igaz) | . |
| character class | [xyz] |
| negált karakterosztály | [^xyz] |
| Perl karakterosztályok | \d |
| negált Perl karakterosztály | \D |
| ASCII-karakterosztályok | [[:alpha:]] |
| tagadott ASCII karakterosztály | [[:^alpha:]] |
| Unicode karakterosztály (egybetűs név) | \pN |
| Unicode karakterosztály | \p{Greek} |
| negált Unicode karakterosztály (egyetlen betűs név) | \PN |
| negated Unicode karakterosztály | \P{Greek} |
| Kompozitok | Description |
|---|---|
xy |
x és y |
x | y |
x vagy y (inkább x) |
| Ismétlés | Description |
|---|---|
x* |
nulla vagy több x, inkább több |
x+ |
egy vagy több x, inkább több |
x? |
nulla vagy egy x, előnyben részesít egy |
x{n,m} |
n vagy n+1 vagy ... vagy m x, inkább több |
x{n,} |
n vagy több x, inkább több |
x{n} |
pontosan n x |
x*? |
nulla vagy több x, inkább kevesebb |
x+? |
egy vagy több x, inkább kevesebb |
x?? |
nulla vagy egy x, előnyben részesítve a nullát |
x{n,m}? |
n vagy n+1 vagy ... vagy m x, inkább kevesebb |
x{n,}? |
n vagy több x, inkább kevesebb |
x{n}? |
pontosan n x |
Note
A számláló űrlapok x{n,m}, x{n,}és x{n} elutasítják azokat az űrlapokat, amelyek legalább 1000-et meghaladó ismétlésszámot hoznak létre. A korlátlan ismétlésekre nem vonatkozik ez a korlátozás.
Perl karakterosztályok
Az alábbi táblázat a jelenleg támogatott Perl karakterosztályokat sorolja fel.
| Perl karakterosztályok (csak ASCII-hez) | Description |
|---|---|
\d |
számjegyek ( [0-9]) |
\D |
nem számjegyek ( [^0-9]) |
\s |
üres hely ( [\t\n\f\r ]) |
\S |
nem szabad tér ( [^\t\n\f\r ]) |
\w |
szókarakterek ( [0-9A-Za-z_]) |
\W |
nem szókarakterek ( [^0-9A-Za-z_]) |
ASCII-karakterosztályok
Az alábbi táblázat a jelenleg támogatott ASCII-karakterosztályokat sorolja fel.
| ASCII-karakterosztályok | Description |
|---|---|
[[:alnum:]] |
alfanumerikus ( [0-9A-Za-z]) |
[[:alpha:]] |
ábécérend ( [A-Za-z]) |
[[:ascii:]] |
ASCII ( [\x00-\x7F]) |
[[:blank:]] |
üres ( [\t ]) |
[[:cntrl:]] |
vezérlés ( [\x00-\x1F\x7F]) |
[[:digit:]] |
számjegyek ( [0-9]) |
[[:graph:]] |
grafikus ( [!-~] vagy [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]) |
[[:lower:]] |
kisbetű ( [a-z]) |
[[:print:]] |
nyomtatható ( [ -~] vagy [ [:graph:]]) |
[[:punct:]] |
írásjelek ( [!-/:-@[-\``{-~]) |
[[:space:]] |
üres hely ( [\t\n\v\f\r ]) |
[[:upper:]] |
nagybetű ( [A-Z]) |
[[:word:]] |
szókarakterek ( [0-9A-Za-z_]) |
[[:xdigit:]] |
hexa számjegy ( [0-9A-Fa-f]) |
Literális karakterek
- Letters
- Numbers
- Symbols
Üres sztringek
| Üres sztringek | Description |
|---|---|
^ |
Szöveg vagy sor elején (m=true) |
$ |
A szöveg végén (például \z, nem \Z) vagy sorban (m=true) |
\A |
A szöveg elején |
\b |
ASCII-szóhatáron (\w az egyik oldalon, \W\Avagy \z a másik oldalon) |
\B |
Az ASCII szóhatárnál nem |
\z |
A szöveg végén |
Groupings
A minta rögzítési csoportja (alexpressziója) a következőkkel:
| Csoportosítás | Description |
|---|---|
(re) |
Számozott rögzítési csoport (submatch) |
(?P<name>re) |
Névvel ellátott és számozott rögzítési csoport (rész egyezés) |
(?:re) |
Nem rögzített csoport |
(?<flags>) |
Beállítás <flags> az aktuális csoportban; rögzítés elmaradása |
(?<flags>:re) |
Beállítás <flags> a csoportosítás során re; nem rögzítve |
Flags
A kifejezés viselkedésének módosításához használjon jelzőket. Például:
| Flag | Description |
|---|---|
i |
Kis- és nagybetűk megkülönböztetése (alapértelmezett false) |
m |
Többsoros mód: ^ és $ a kezdő/záró szöveg mellett egyezik a kezdő/záró vonallal (alapértelmezett false) |
s |
Egyezés beállítása .\n (alapértelmezett false) |
c |
Kis- és nagybetűk megkülönböztetése (alapértelmezett true) |
Ez az implementáció támogatja az RE2 után a reguláris kifejezések POSIX szabványát, és támogatja a hagyományos kifejezések PCRE/PCRE2 formátumát, amely kompatibilis a legtöbb modern reguláris kifejezési motorral és eszközzel. A normál kifejezéseknek különböző ízei vannak, például POSIX, ANSI, Perl és PCRE, amelyek szintaxisa és funkciói eltérőek. A mögöttes regex motor támogatott szerkezeteiről és viselkedéséről további információt a RE2, egy reguláris kifejezéstár tartalmaz.
Note
Az SQL Serverben a reguláris kifejezésmegfeleltetés nem felel meg az SQL-rendezéseknek a nyelvi összehasonlításokhoz. Ez a viselkedés a legtöbb reguláris kifejezésmotorral konzisztens, mivel a rendezési szabályok helyett a minta- és Unicode-karaktertulajdonságokon alapul az egyeztetés. Ennek eredményeképpen eltérő viselkedést eredményezhet más sztring-összehasonlító függvényekhez, például a LIKE-hoz képest, különösen a nyelvspecifikus rendezésű indexelt oszlopok esetében.
Requirements
- Egy SQL-ügyféleszköz, például az Azure Data Studio, az SQL Server Management Studio vagy a Visual Studio Code.
- Az SQL-szintaxis és -lekérdezések alapszintű ismerete.
- A reguláris kifejezésszintaxis és -fogalmak alapszintű ismerete.
GYIK
Milyen teljesítménybeli hatása van a regex használatának?
A Regex-lekérdezések teljesítménybeli hatással lehetnek a regex minta összetettségétől, a szöveges adatok méretétől és az érintett sorok számától függően. A végrehajtási terv és a statisztikák segítségével figyelheti és optimalizálhatja a regex-lekérdezések teljesítményét.
Korlátozások
A következő elemek jelenleg nem támogatottak:
- A következő belső függvények támogatják a LOB-adattípusokat (varchar(max) vagy nvarchar(max)):
string_expressionsREGEXP_LIKEREGEXP_COUNTREGEXP_INSTR
Ez a támogatás azonban legfeljebb 2 MB bemeneti méretekre korlátozódik.
A LOB-adattípusok nem támogatottak a következő regex függvényekben:
REGEXP_REPLACEREGEXP_SUBSTRREGEXP_MATCHESREGEXP_SPLIT_TO_TABLE
A reguláris kifejezésfüggvények natívan lefordított tárolt eljárásokban nem támogatottak.