REGEXP_REPLACE (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2025 (17.x) Azure SQL Veritabanı Microsoft Fabric'teAzure SQL Yönetilen ÖrneğiSQL analiz uç noktası ve Microsoft Fabric'teki Microsoft FabricSQL veritabanındaki Ambar

Skaler REGEXP_REPLACE düzenli ifade fonksiyonu, değiştirilmiş bir kaynak dizesini yerine bir yedek diziliyle değiştirir; burada düzenli ifade deseninin ortaya çıktığı yer bulunur. Eşleşme bulunmazsa, işlev özgün dizeyi döndürür.

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

Arguments

string_expression

Karakter dizesinin ifadesi.

Sabit, değişken veya karakter dizesi sütunu olabilir.

Veri türleri: char, nchar, varchar veya nvarchar.

Note

Fonksiyonlar, REGEXP_*string_expression parametresi için 2 MB'ye kadar LOB tiplerini (varchar(max) ve nvarchar(max)) destekler.

pattern_expression

Eşleşecek normal ifade deseni. Genellikle bir metin değişmez değeridir.

Veri türleri: char, nchar, varchar veya nvarchar. pattern_expression en fazla 8.000 bayt karakter uzunluğunu destekler.

string_replacement

Eşleşen alt dizeler için değiştirme dizesini belirten ve desenle eşleşen alt dizelerin yerini alan dize ifadesi. string_replacement , varchar, nchar, nvarchar, varchar(max) veya nvarchar(max) veri türleri olabilir (LOB tipleri 2 MB'a kadar desteklenir). Boş bir dize ('') belirtilirse, işlev eşleşen tüm alt dizeleri kaldırır ve sonuçta elde edilen dizeyi döndürür. Varsayılan değiştirme dizesi boş dizedir ('' ).

string_replacement, desenin n'th parantez grubuyla (alt ifade) eşleşen kaynak alt dizenin eklenmesi gerektiğini ve desenin tamamıyla eşleşen alt dizenin eklenmesi gerektiğini belirtmek için 1 ile 9 arasında olan \niçerebilir & . Değiştirme metnine değişmez değer ters eğik çizgi koymanız gerekiyorsa \ yazın.

Mesela

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

Returns:

(123) 456-7890

içinde sağlanan \nstring_replacement , pattern_expression grup sayısından büyükse işlev değeri yoksayar.

Örneğin:

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

Returns:

(123) ()-xxxx

start

Arama dizesi içinde aramanın başlangıç konumunu belirtin. Optional. Tür int veya bigint şeklindedir.

Numaralandırma 1 tabanlıdır, yani ifadedeki ilk karakter ve 1 değeri olmalıdır >= 1. Başlangıç ifadesi değerinden 1küçükse hata döndürür. Başlangıç ifadesi string_expression uzunluğundan büyükse işlev string_expression döndürür. Varsayılan değer: 1.

occurrence

Kaynak dizede desen ifadesinin hangi bulunmasının aranması veya değiştirilmesi gerektiğini belirten bir ifade (pozitif tam sayı). Varsayılan değer 0, yani pattern_expression'nin tüm örnekleri değiştirilir. Pozitif tam nsayı için, 'string_expression'de ' nci karşılaşmayı arar, her önceki eşleşmeyi hemen takip eden karakterden arama devam eder.

flags

Eşleşmeleri aramak için kullanılan değiştiricileri belirten bir veya daha fazla karakter. Tür, en fazla 30 karakter içeren varchar veya char'tır.

Örneğin, ims. Varsayılan değer: c. Boş bir dize (' ') sağlanırsa, varsayılan değer ('c')olarak değerlendirilir. Veya c diğer karakter ifadelerini sağlayın. Bayrak birden çok çelişkili karakter içeriyorsa, SQL Server son karakteri kullanır.

Örneğin, regex değerini belirtirseniz ic büyük/küçük harfe duyarlı eşleştirme döndürür.

Değer , Desteklenen bayrak değerleri'nde listelenenlerden farklı bir karakter içeriyorsa, sorgu aşağıdaki örneğe benzer bir hata döndürür:

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Desteklenen bayrak değerleri
Flag Description
i Büyük/küçük harfe duyarlı değil (varsayılan false)
m Çok satırlı mod: ^ ve $ başlangıç/bitiş metnine ek olarak başlangıç/bitiş satırını eşleştir (varsayılan false)
s Eşleşmeye . izin ver \n (varsayılan false)
c Büyük/küçük harfe duyarlı (varsayılan true)

Dönüş değeri

Expression.

Platform desteği

  • Azure SQL Yönetilen Örneği yılında, T-SQL düzenli ifade fonksiyonları yalnızca SQL Server 2025 veya Always-up-totarihgüncelleme politikası ile kullanılabilir.
  • T-SQL düzenli ifade fonksiyonları Azure SQL Veritabanı, Fabric'te SQL database ve SQL Server 2025'ten itibaren mevcuttur.
  • T-SQL düzenli ifade fonksiyonları SQL Server 2022 veya önceki sürümlerde mevcut değildir.
  • T-SQL düzenli ifade skaler fonksiyonları Fabric Data Warehouse'de önizleme özelliği olarak mevcuttur. Daha fazla bilgi için bkz. Fabric Data Warehouse'daki Düzenli ifadeler fonksiyonları. T-SQL düzenli ifadeli tablo değerli fonksiyonlar Fabric Data Warehouse'de mevcut değildir.

Examples

ürün adlarında veya a öğelerinin e tüm oluşumlarını ile X değiştirin.

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

ürün açıklamalarında veya öğesinin cat ilk geçtiği yeri ile dog değiştirin pet

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

Telefon numaralarının son dört basamağını yıldız işaretiyle değiştirme

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