logo

MySQL REGEXP_REPLACE() İşlevi

Desen eşleştirme için MySQL REGEXP_REPLACE() işlevi kullanılır. Bu işlev Bir dizede normal ifade kalıbı arar ve kalıbın her tekrarını değiştirir verilen normal ifade modeliyle eşleşen belirtilen dizeyle. Eşleşme bulunursa, dizenin tamamını değiştirmelerle birlikte döndürür. Eşleşme bulunamazsa döndürülen dize değişmez. İfade, kalıplar ve değiştirme dizesi NULL ise işlev NULL değerini döndürür.

REGEXP_REPLACE(), REPLACE(), Ve TRANSLATE() içinde işlev görmek MySQL REGEXP_REPLACE bir dizede normal ifade modeli için arama yaparken, TRANSLATE işlevinin birden çok tek karakter değişikliği yapmamıza izin vermesi ve REPLACE işlevinin bir dizenin tamamını başka bir dizeyle değiştirmesi dışında aynı şekilde çalışır.

Sözdizimi

Aşağıda bu işlevi MySQL'de kullanmak için temel bir sözdizimi verilmiştir:

 REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]]) 

Parametre Açıklaması

REGEXP_REPLACE() işlevi parametrelerinin açıklaması şöyledir:

ifade: Düzenli ifadelerin parametreleri ve işlevleri arasında arama yapacağımız bir giriş dizesidir.

desenler: Bir alt dizenin düzenli ifade modelini temsil eder.

değiştir_dizge: Eşleşme bulunursa değiştirilecek bir alt dizedir.

REGEXP_INSTR() işlevi aşağıda verilen çeşitli isteğe bağlı parametreleri kullanır:

konum: Aramayı başlatmak için dize içindeki ifadedeki konumu belirtmek için kullanılır. Bu parametreyi belirtmediğimiz takdirde 1 konumunda başlayacaktır.

meydana gelme: Bir eşleşmenin hangi örneğinde arama yapacağımızı belirtmek için kullanılır. Bu parametreyi belirtmezsek tüm oluşumlar değiştirilir.

eşleşme türü: Düzenli ifadeyi hassaslaştırmamızı sağlayan bir dizedir. Eşleştirmeyi gerçekleştirmek için aşağıdaki olası karakterleri kullanır.

    C:Büyük/küçük harfe duyarlı bir eşleşmeyi temsil eder.Ben:Büyük/küçük harfe duyarlı olmayan bir eşleşmeyi temsil eder.M:Dize içinde satır sonlandırıcılara izin veren çok satırlı bir modu temsil eder. Varsayılan olarak bu işlev, dizenin başındaki ve sonundaki satır sonlandırıcılarla eşleşir.N:Değiştirmek için kullanılır. Satır sonlandırıcılarla eşleşen (nokta) karakteri.içinde:Yalnızca Unix'e özgü satır sonlarını temsil eder.

Çeşitli örneklerle anlayalım.

Örnek

Aşağıdaki ifade MySQL'deki REGEXP_REPLACE fonksiyonunun temel örneğini açıklamaktadır.

 mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String'; 

İşte çıktı:

MySQL REGEXP_REPLACE() İşlevi

Giriş dizimizin şunu içerdiğini varsayalım: dize içinde birden fazla eşleşme , o zaman bu işlev hepsinin yerini alacaktır. Aşağıdaki ifadelere bakın:

 mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String'; 

İşte çıktı:

MySQL REGEXP_REPLACE() İşlevi

Giriş dizesi ile değiştirilebilir dize arasında eşleşme yoksa, ifadeler orijinal dizeyi döndürür. Aşağıdaki örneğe bakın:

 mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String'; 

İşte çıktı:

MySQL REGEXP_REPLACE() İşlevi

Dizeyi şununla değiştirmek istiyorsak konumu belirterek Değiştirmeyi başlatmak için REGEX_REPLACE işlevini aşağıdaki gibi kullanabiliriz:

 mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String'; 

Bu açıklamada değiştirmeyi başlatmak için konumu 2 olarak belirledik. Bu sorguyu çalıştırdığımızda, değiştirilebilir dizenin ilk konumunun değiştirilmediğini görebildiğimiz aşağıdaki çıktıyı elde edeceğiz.

MySQL REGEXP_REPLACE() İşlevi

Eşleşen dizenin tüm oluşumlarının varsayılan olarak değiştirildiğini biliyoruz. Bununla birlikte, eşleşen dizeyi değiştirmek için belirli bir örneği kullanarak şunu belirtme seçeneğimiz de vardır: meydana gelme parametre. Aşağıdaki örneğe bakın:

 mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String'; 

Bu örnekte, değiştirilebilir dizenin başlangıç ​​konumu, ilk oluşum başladıktan sonra gelen 2'dir. Bu nedenle, olay 2, olay 1 oldu ve olay 3, olay 2 oldu. Aşağıdaki çıktıya bakın:

MySQL REGEXP_REPLACE() İşlevi

Eşleme türü bağımsız değişkenlerini kullanarak normal ifadeyi hassaslaştırmak için ek bir parametre sağlayabiliriz. Örneğin , eşleşmenin büyük/küçük harfe duyarlı olup olmadığını veya satır sonlandırıcıları içerip içermediğini doğrulamak için bunu kullanabiliriz. Bir belirttiğimiz aşağıdaki örneğe bakın. harfe duyarlı Ve büyük/küçük harfe duyarlı olmayan eşleşme:

 mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'c') AS ' Case-Sensitive', REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'i') AS ' Case-Insensitive'; 

İşte çıktı:

MySQL REGEXP_REPLACE() İşlevi