Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2025 (17.x) (wersja zapoznawcza) Azure
SQL Database Azure SQLManaged Instance
SQL Database
w wersji zapoznawczej usługi Microsoft Fabric
Note
Jako funkcja w wersji zapoznawczej technologia przedstawiona w tym artykule podlega uzupełniających warunków użytkowania dla wersji zapoznawczych platformy Microsoft Azure.
Wskazuje, czy wzorzec wyrażenia regularnego jest zgodny z ciągiem.
REGEXP_LIKE
(
string_expression,
pattern_expression [, flags ]
)
REGEXP_LIKE
wymaga zgodności bazy danych poziom 170 lub nowszy. Jeśli poziom zgodności bazy danych jest niższy niż 170, REGEXP_LIKE
nie jest dostępny. Inne funkcje skalarne wyrażeń regularnych są dostępne na wszystkich poziomach zgodności.
Poziom zgodności można sprawdzić w widoku sys.databases
lub we właściwościach bazy danych. Poziom zgodności bazy danych można zmienić za pomocą następującego polecenia:
ALTER DATABASE [DatabaseName] SET COMPATIBILITY_LEVEL = 170;
Note
Wyrażenia regularne są dostępne w usłudze Azure SQL Managed Instance skonfigurowanym przy użyciu zasad aktualizacji always-up-to-date .
Arguments
string_expression
Wyrażenie ciągu znaków.
Może być stałą, zmienną lub kolumną ciągu znaków.
Typy danych: char, nchar, varcharlub nvarchar.
Note
Funkcje REGEXP_LIKE
, REGEXP_COUNT
i REGEXP_INSTR
obsługują typy LOB (varchar(max) i nvarchar(max)) do 2 MB dla parametru string_expression .
pattern_expression
Wzorzec wyrażenia regularnego do dopasowania. Zazwyczaj literał tekstu.
Typy danych: char, nchar, varcharlub nvarchar. pattern_expression obsługuje maksymalną długość znaków wynoszącą 8000 bajtów.
flags
Co najmniej jeden znak określający modyfikatory używane do wyszukiwania dopasowań. Typem jest varchar lub znak, z maksymalnie 30 znakami.
Na przykład ims
. Wartość domyślna to c
. Jeśli zostanie podany pusty ciąg (' ')
, będzie on traktowany jako wartość domyślna ('c')
. Podaj c
lub inne wyrażenia znaków. Jeśli flaga zawiera wiele sprzecznych znaków, program SQL Server używa ostatniego znaku.
Jeśli na przykład określisz ic
regex zwraca dopasowanie uwzględniające wielkość liter.
Jeśli wartość zawiera znak inny niż wymienione na Obsługiwane wartości flagi, zapytanie zwraca błąd podobny do następującego przykładu:
Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Obsługiwane wartości flagi
Flag | Description |
---|---|
i |
Bez uwzględniania wielkości liter (wartość domyślna false ) |
m |
Tryb wielowierszowy: ^ i $ dopasuj wiersz początkowy/końcowy oprócz tekstu rozpoczynającego/końcowego (wartość domyślna false ) |
s |
Dopasuj . \n (ustawienie domyślne false ) |
c |
Uwzględniana wielkość liter (wartość domyślna true ) |
Return value
Boolean value.
true
lub false
.
Remarks
Aby zwiększyć dokładność szacowania kardynalności dla REGEXP_LIKE
funkcji, możesz użyć ASSUME_FIXED_MIN_SELECTIVITY_FOR_REGEXP
wskazówek dotyczących zapytań i ASSUME_FIXED_MAX_SELECTIVITY_FOR_REGEXP
, aby dostosować domyślne wartości wyboru. Aby uzyskać więcej informacji, zobacz Wskazówki dotyczące zapytań.
Te wskazówki dotyczące zapytań są również zintegrowane z opiniami na temat szacowania kardynalności (CE). Model opinii CE automatycznie identyfikuje zapytania przy użyciu REGEXP_LIKE
funkcji, w której istnieje znacząca różnica między szacowanymi i rzeczywistymi liczbami wierszy. Następnie stosuje odpowiednią wskazówkę wyboru na poziomie zapytania, aby poprawić jakość planu bez konieczności ręcznego wprowadzania danych wejściowych.
Aby wyłączyć to automatyczne zachowanie oparte na opiniach, włącz flagę śledzenia 16268.
Examples
Wybierz wszystkie rekordy z tabeli EMPLOYEES
, w której imię rozpoczyna się od A
i kończy się Y
SELECT * FROM EMPLOYEES WHERE REGEXP_LIKE (FIRST_NAME, '^A.*Y$');
Wybierz wszystkie rekordy z tabeli ORDERS
, w której data zamówienia przypada w lutym 2020 r.
SELECT * FROM ORDERS WHERE REGEXP_LIKE (ORDER_DATE, '2020-02-\d\d');
Zaznacz wszystkie rekordy z tabeli PRODUCTS
, w której nazwa produktu zawiera co najmniej trzy kolejne śluby
SELECT * FROM PRODUCTS WHERE REGEXP_LIKE (PRODUCT_NAME, '[AEIOU]{3,}');
Utwórz tabelę employees z ograniczeniami CHECK
dla kolumn Email
i Phone_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})$'))
);