Bir dizede düzenli ifadeyle eşleşen tüm alt dizeleri değiştirir ve sonucu yeni bir dize olarak döndürür.
REGEXP_REPLACE(str, pattern, replacement) ifadesi; str dizesindeki pattern düzenli ifadesiyle eşleşen her alt dizeyi replacement ile değiştirerek yeni bir VARCHAR değeri döndürür.
Sınırlamalar
Yalnızca Ververica Runtime (VVR) 3.0.0 veya sonraki sürümlerini kullanan Realtime Compute for Apache Flink ortamında desteklenir.
Söz dizimi
VARCHAR REGEXP_REPLACE(VARCHAR str, VARCHAR pattern, VARCHAR replacement)
Giriş parametreleri
| Parametre | Veri türü | Açıklama |
|---|---|---|
str |
VARCHAR | Aranacak kaynak dize. |
pattern |
VARCHAR | Eşleştirilecek düzenli ifade deseni. |
replacement |
VARCHAR | Her eşleşme yerine geçecek dize. |
Herhangi bir giriş parametresi NULL ise veya düzenli ifade geçersizse NULL döndürür.
Kullanım notları
Hem pattern hem de replacement parametreleri Java Pattern söz dizimini takip eder.
SQL'de desen yazarken özel karakterleri çift ters eğik çizgi ile kaçış karakteri olarak belirtmeniz gerekir. SQL ayrıştırıcısı bir ters eğik çizgiyi tükettiğinden regex motoruna istenen desen ulaşır. Örneğin, bir rakam grubunu eşleştirmek için '(\\d+)' kullanın; '(\d+)' kullanmayın.
Örnekler
Aşağıdaki örneklerde veri kaynağı olarak T1 tablosu kullanılır:
T1
| str1 (VARCHAR) | pattern1 (VARCHAR) | replace1 (VARCHAR) |
|---|---|---|
2014-03-13 |
- |
(boş dize) |
| (boş dize) | - |
(boş dize) |
2014-03-13 |
(boş dize) | s |
2014-03-13 |
( |
s |
100-200 |
(\\d+) |
num |
Sorgu
SELECT REGEXP_REPLACE(str1, pattern1, replace1) AS `result`
FROM T1;
Sonuçlar
| result (VARCHAR) | Açıklama |
|---|---|
20140313 |
Tüm tire işaretlerini boş dize ile değiştirir. |
| (boş dize) | Giriş dizesi boştur; değiştirilecek içerik yoktur. |
s2s0s1s4s-s0s3s-s1s3s |
Boş desen, karakterler arasındaki her konumla eşleşir ve her konuma s ekler. |
| NULL | ( geçersiz bir düzenli ifadedir; NULL döndürür. |
num-num |
(\\d+) her rakam grubuyla eşleşir; hem 100 hem de 200 değerlerini num ile değiştirir. |