REGEXP_REPLACE (Transact-SQL)

Dotyczy: Sql Server 2025 (17.x) Punkt końcowy analizy SQLusługi Azure SQL Managed Instanceusługi Azure SQL Database w usłudzeMicrosoft Fabric i magazynie wbazie danych Microsoft Fabric SQL Database w usłudze Microsoft Fabric

Skalarna REGEXP_REPLACE funkcja wyrażenia regularnego zwraca zmodyfikowany ciąg źródłowy zastąpiony przez zastępujący ciąg, gdzie występuje wzorzec wyrażenia regularnego. Jeśli nie znaleziono dopasowań, funkcja zwraca oryginalny ciąg.

REGEXP_REPLACE
(
    string_expression,
    pattern_expression [ , string_replacement [ , start [ , occurrence [ , flags ] ] ] ]
)

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 obsługują REGEXP_* 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.

string_replacement

Wyrażenie ciągu określające ciąg zastępczy pasujących podciągów i zamienia podciągy dopasowane przez wzorzec. Mogą to string_replacement być typy danych char, varchar, nchar, nvarchar, varchar(max) lub nvarchar(max) (obsługiwane są do 2 MB). Jeśli określono pusty ciąg (''), funkcja usuwa wszystkie dopasowane podciągy i zwraca wynikowy ciąg. Domyślny ciąg zastępczy to pusty ciąg ('').

String_replacement może zawierać \n, gdzie n wynosi od 1 do 9, aby wskazać, że podciąg źródłowy pasujący do n'th nadrzędnej grupy (podwyrażenie) wzorca należy wstawić i może zawierać & wskazać, że podciąg pasujący do całego wzorca powinien zostać wstawiony. Napisz \ jeśli musisz umieścić ukośnik odwrotny literału w tekście zastępczym.

Na przykład

REGEXP_REPLACE('123-456-7890', '(\d{3})-(\d{3})-(\d{4})', '(\1) \2-\3')

Returns:

(123) 456-7890

Jeśli podana \n wartość jest string_replacement większa niż liczba grup w pattern_expression, funkcja ignoruje wartość.

Przykład:

REGEXP_REPLACE('123-456-7890', '(\d{3})-(\d{3})-(\d{4})', '(\1) (\4)-xxxx')

Returns:

(123) ()-xxxx

start

Określ pozycję początkową wyszukiwania w ciągu wyszukiwania. Optional. Typ to int lub bigint.

Numerowanie jest oparte na 1, co oznacza, że pierwszy znak w wyrażeniu jest 1, a wartość musi być >= 1. Jeśli wyrażenie początkowe jest mniejsze niż 1, zwraca błąd. Jeśli wyrażenie początkowe jest większe niż długość string_expression, funkcja zwraca string_expression. Wartość domyślna to 1.

occurrence

Wyrażenie (dodatnia liczba całkowita), które określa, które wystąpienie wyrażenia wzorca w ciągu źródłowym należy przeszukać lub zastąpić. Domyślna wartość to 0, co oznacza, że wszystkie wystąpienia pattern_expression są zastępowane. Dla dodatniej liczby ncałkowitej przeszukuje string_expression dla -tego nzdarzenia, kontynuując wyszukiwanie od znaku bezpośrednio po każdym poprzednim dopasowaniu.

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)

Wartość zwracana

Expression.

Obsługa platformy

  • W Azure SQL Managed Instance funkcje wyrażeń regularnych T-SQL są dostępne wyłącznie w zasadzie aktualizacjiSQL Server 2025 lub Always-up-to-date.
  • Funkcje wyrażeń regularnych T-SQL są dostępne w Azure SQL Database, bazie SQL w Fabric oraz od SQL Server 2025.
  • Funkcje wyrażeń regularnych T-SQL nie są dostępne w wersjach SQL Server 2022 ani starszych.
  • Funkcje skalarne wyrażeń regularnych T-SQL są dostępne jako funkcja podglądowa w Fabric Data Warehouse. Więcej informacji można znaleźć w artykule Funkcje wyrażeń regularnych w Fabric Data Warehouse. Funkcje tabelowe T-SQL wyrażeń regularnych nie są dostępne w Fabric Data Warehouse.

Examples

Zastąp wszystkie wystąpienia a lub eX w nazwach produktów.

SELECT REGEXP_REPLACE(PRODUCT_NAME, '[ae]', 'X', 1, 0, 'i')
FROM PRODUCTS;

Zastąp pierwsze wystąpienie cat lub dogpet w opisach produktów

SELECT REGEXP_REPLACE(PRODUCT_DESCRIPTION, 'cat|dog', 'pet', 1, 1, 'i')
FROM PRODUCTS;

Zastąp ostatnie cztery cyfry numerów telefonów gwiazdką

SELECT REGEXP_REPLACE(PHONE_NUMBER, '\d{4}$', '****')
FROM CUSTOMERS;