Aracılığıyla paylaş


REGEXP_SUBSTR (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2025 (17.x) Microsoft Fabric'teAzure SQL VeritabanıAzure SQL Yönetilen Örneği SQL veritabanı

Normal ifade deseni ile eşleşen bir dizenin alt dizesinin bir oluşumunu döndürür. Eşleşme bulunmazsa döndürür NULL.

REGEXP_SUBSTR
(
    string_expression,
    pattern_expression [ , start [ , occurrence [ , flags [ , group ] ] ] ]
)

Note

Normal ifadeler Azure SQL Yönetilen Örneği'nde SQL Server 2025 veya Always-up-to-dategüncelleştirme ilkesiyle kullanılabilir.

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

REGEXP_LIKE, REGEXP_COUNTve REGEXP_INSTR işlevleri, string_expression parametresi için 2 MB'a kadar LOB türlerini (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.

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şlevi döndürür NULL. Varsayılan değer: 1.

occurrence

Desen ifadesinin kaynak dize içinde hangi oluşumunun arandığını veya değiştirildiğini belirten bir ifade (pozitif tamsayı). Varsayılan 1 değeridir. string_expression ilk karakterinde arar. Pozitif bir n tamsayısı için, pattern_expression ilk oluşumunu izleyen ilk karakterden başlayarak n. yinelemeyi vb. arar.

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)

group

Bir pattern_expression hangi yakalama grubunun (alt ifade) döndürülecek string_expression konumunu belirler. Yakalama grubu (alt ifade), parantez içine alınmış bir desen parçasıdır ve iç içe geçirilebilir.

Yakalama grupları, sol parantezlerinin görüntülendiği sırayla numaralandırılır. Grubun veri tipi int olup, değeri daha büyük veya 0eşit olmalı, ayrıca pattern_expression'daki yakalama gruplarının (alt ifadelerin) sayısından büyük olmamalıdır. Varsayılan grup değeri 0, bu da pozisyonun tüm desenle eşleşen diziye dayandığını gösterir.

Dönüş değeri

String.

Examples

E-posta adresinden etki alanı adını ayıklayın.

SELECT REGEXP_SUBSTR(EMAIL, '@(.+)$', 1, 1, 'i', 1) AS DOMAIN
FROM CUSTOMERS;

Tümcede sesli harfle başlayan ilk sözcüğü bulun.

SELECT REGEXP_SUBSTR(COMMENT, '\b[aeiou]\w*', 1, 1, 'i') AS WORD
FROM FEEDBACK;

Kredi kartı numarasının son dört rakamını alma.

SELECT REGEXP_SUBSTR(CARD_NUMBER, '\d{4}$') AS LAST_FOUR
FROM PAYMENTS;