Udostępnij za pośrednictwem


REGEXP_MATCHES (Transact-SQL) (wersja zapoznawcza)

Dotyczy: SQL Server 2025 (17.x) (wersja zapoznawcza) Azure SQL Database Azure SQLManaged InstanceSQL Database w wersji zapoznawczej usługi Microsoft Fabric

Note

Jako funkcja w wersji zapoznawczej technologia przedstawiona w tym artykule podlega dodatkowym warunkom użytkowania dla wersji zapoznawczych platformy Microsoft Azure.

Zwraca tabelę przechwyconych podciągów pasujących do wzorca wyrażenia regularnego do ciągu. Jeśli nie zostanie znalezione dopasowanie, funkcja nie zwraca wiersza.

REGEXP_MATCHES
     (
      string_expression,
      pattern_expression [, flags ]
     )

Wymaga poziomu zgodności bazy danych 170. Aby ustawić poziom zgodności bazy danych, zapoznaj się z artykułem ALTER DATABASE (Transact-SQL) poziom zgodności.

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_COUNTi 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)

Returns

Zwraca wynik tabelaryczny w następujący sposób:

Column name Data type Description
match_id bigint Sekwencja pasujących wyrazów.
start_position int Pozycja indeksu początkowego.
end_position int Zakończenie pozycji indeksu.
match_value Ten sam typ co string_expression lub varchar Matching expression.
substring_matches json Dokument JSON opisujący dopasowanie.

Examples

Zwraca wyniki tabelaryczne od 'Learning #AzureSQL #AzureSQLDB' tego początku z znakiem # , po którym następuje co najmniej jeden znak alfanumeryczny (A-Z, a-z, 0-9) lub podkreślenia (_).

SELECT *
FROM REGEXP_MATCHES('Learning #AzureSQL #AzureSQLDB', '#([A-Za-z0-9_]+)');
match_id start_position end_position match_value substring_matches
1        10             18           #AzureSQL   [{"value":"AzureSQL","start":11,"length":8}]
2        20             30           #AzureSQLDB [{"value":"AzureSQLDB","start":21,"length":10}]

Zwraca ciągi z ABC tych ciągów, które zaczynają się od litery A , po której następują dokładnie dwa znaki.

SELECT *
FROM REGEXP_MATCHES('ABC', '^(A)(..)$');
match_id start_position end_position match_value substring_matches
1        1              3            ABC         [{"value":"A","start":1,"length":1},{"value":"BC","start":2,"length":2}]