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
Azt jelzi, hogy a reguláris kifejezésminta egyezik-e egy sztringben.
REGEXP_LIKE
(
string_expression,
pattern_expression [ , flags ]
)
REGEXP_LIKE 170-es vagy újabb adatbázis-kompatibilitási szintet igényel. Ha az adatbázis kompatibilitási szintje 170-nél alacsonyabb, REGEXP_LIKE nem érhető el. A többi reguláris kifejezés skaláris függvénye minden kompatibilitási szinten elérhető.
A kompatibilitási szintet a nézetben vagy az sys.databases adatbázis tulajdonságaiban ellenőrizheti. Az adatbázis kompatibilitási szintjét az alábbi paranccsal módosíthatja:
ALTER DATABASE [DatabaseName]
SET COMPATIBILITY_LEVEL = 170;
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.
Arguments
string_expression
Karaktersztring kifejezése.
Lehet állandó, változó vagy karaktersztring oszlopa.
Adattípusok: karakter, nchar, varcharvagy nvarchar.
Note
A REGEXP_LIKE, REGEXP_COUNTés REGEXP_INSTR függvények legfeljebb 2 MB-ig támogatják a LOB-típusokat (varchar(max) és nvarchar(max)) a string_expression paraméterhez.
pattern_expression
Egyező reguláris kifejezésminta. Általában szövegkonstans.
Adattípusok: karakter, nchar, varcharvagy nvarchar. pattern_expression legfeljebb 8000 bájt karakterhosszt támogat.
flags
Egy vagy több karakter, amely megadja az egyezések kereséséhez használt módosítókat. A típus varchar vagy karakter, legfeljebb 30 karakterből áll.
Például ims. Az alapértelmezett érték a c. Ha üres sztring (' ') van megadva, akkor a rendszer az alapértelmezett értékként kezeli ('c'). Adjon meg c vagy bármely más karakterkifejezést. Ha a jelölő több egymásnak ellentmondó karaktert tartalmaz, akkor az SQL Server az utolsó karaktert használja.
Ha például ic a regex megkülönbözteti a kis- és nagybetűket.
Ha az érték Támogatott jelölőértékeklistán felsoroltaktól eltérő karaktert tartalmaz, a lekérdezés az alábbi példához hasonló hibát ad vissza:
Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Támogatott jelölőértékek
| 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) |
Visszaadott érték
Logikai érték.
true vagy false.
Remarks
Számosság becslése
A függvény kardinalitás-becslésénekREGEXP_LIKE pontosságának növelése érdekében használjuk a ASSUME_FIXED_MIN_SELECTIVITY_FOR_REGEXP és ASSUME_FIXED_MAX_SELECTIVITY_FOR_REGEXP lekérdezési tippeket az alapértelmezett szelektivitási értékek módosítására. További információ: Lekérdezési tippek.
Ezek a lekérdezési tippek integrálódnak a Cardinality Estimation (CE) visszajelzéssel is. A CE visszacsatolási modell automatikusan azonosítja azokat a lekérdezéseket, amelyek a REGEXP_LIKE függvényt használják, ahol jelentős különbség van a becsült és tényleges sorszám között. Ezután a megfelelő szelektivitási tippet alkalmazza a lekérdezés szintjén a tervminőség manuális bevitel nélkül történő javítása érdekében.
Az automatikus visszajelzési viselkedés letiltásához engedélyezze a nyomkövetési jelző 16268-at.
Examples
Válassz Employees ki minden rekordot a táblázatból, ahol az első név a következő A betűkkel kezdődik és végződik Y:
SELECT *
FROM Employees
WHERE REGEXP_LIKE (FIRST_NAME, '^A.*Y$');
Válasszuk Employees ki az összes rekordot a táblázatból, ahol az első név kezdődik A és végződik Y, kis- és nagybetűs módban:
SELECT *
FROM Employees
WHERE REGEXP_LIKE (FIRST_NAME, '^A.*Y$', 'i');
Válassza ki az összes rekordot abból a Orders táblából, ahol a rendelés dátuma 2020 februárjában van:
SELECT *
FROM Orders
WHERE REGEXP_LIKE (ORDER_DATE, '2020-02-\d\d');
Válassza ki az összes rekordot abból a Products táblából, amelyben a terméknév legalább három egymást követő magánhangzót tartalmaz:
SELECT *
FROM Products
WHERE REGEXP_LIKE (PRODUCT_NAME, '[AEIOU]{3,}');
Készíts egy alkalmazotti táblázatot és CHECK oszlopok korlátaival EmailPhone_Number :
DROP TABLE IF EXISTS Employees;
CREATE TABLE Employees
(
ID INT IDENTITY (101, 1),
[Name] VARCHAR (150),
Email VARCHAR (320)
CHECK (REGEXP_LIKE (Email, '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$')),
Phone_Number NVARCHAR (20)
CHECK (REGEXP_LIKE (Phone_Number, '^(\d{3})-(\d{3})-(\d{4})$'))
);