Funkcija MySQL REGEXP_REPLACE() se uporablja za ujemanje vzorcev. Ta funkcija poišče v nizu vzorec regularnega izraza in zamenja vsako pojavitev vzorca s podanim nizom, ki se ujema z danim vzorcem regularnega izraza. Če je ujemanje najdeno, vrne celoten niz skupaj z zamenjavami. Če ni ujemanja, je vrnjeni niz nespremenjen. Če so izraz, vzorci in nadomestni niz NULL, bo funkcija vrnila NULL.
REGEXP_REPLACE(), REPLACE(), in TRANSLATE() funkcija v MySQL delujejo enako, le da nam TRANSLATE omogoča več zamenjav z enim znakom in funkcija REPLACE nadomesti en cel niz z drugim nizom, medtem ko REGEXP_REPLACE v nizu išče vzorec regularnega izraza.
Sintaksa
Sledi osnovna sintaksa za uporabo te funkcije v MySQL:
REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]])
Parameter Razlaga
Razlaga parametrov funkcije REGEXP_REPLACE() je:
izraz: Je vhodni niz, na katerem bomo izvajali iskanje po parametrih in funkcijah regularnih izrazov.
vzorci: Predstavlja vzorec regularnega izraza za podniz.
zamenjaj_niz: To je podniz, ki bo nadomeščen, če se najde ujemanje.
Funkcija REGEXP_INSTR() uporablja različne neobvezne parametre, ki so navedeni spodaj:
položaj: Uporablja se za določitev položaja v izrazu znotraj niza za začetek iskanja. Če tega parametra ne podamo, se bo začel na mestu 1.
pojav: Uporablja se za določitev, za katero pojavnost ujemanja bomo iskali. Če tega parametra ne podamo, se zamenjajo vse pojavitve.
match_type: To je niz, ki nam omogoča izboljšanje regularnega izraza. Za ujemanje uporablja naslednje možne znake.
Naj to razumemo z različnimi primeri.
Primer
Naslednji stavek pojasnjuje osnovni primer funkcije REGEXP_REPLACE v MySQL.
mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String';
Tukaj je rezultat:
Recimo, da naš vhodni niz vsebuje več ujemanj znotraj niza , bo ta funkcija nadomestila vse. Oglejte si spodnje izjave:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String';
Tukaj je rezultat:
Če se vhodni niz in zamenljivi niz ne ujemata, stavki vrnejo izvirni niz. Oglejte si spodnji primer:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String';
Tukaj je rezultat:
Če želimo zamenjati niz z določitev položaja za začetek zamenjave lahko uporabimo funkcijo REGEX_REPLACE na naslednji način:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String';
V tej izjavi smo določili položaj kot 2 za začetek zamenjave. Z izvedbo te poizvedbe bomo dobili spodnji rezultat, kjer lahko vidimo, da prvi položaj zamenljivega niza ni zamenjan.
Vemo, da so vse pojavitve ujemajočega se niza privzeto zamenjane. Vendar pa imamo tudi možnost, da določimo določen pojav za zamenjavo ujemajočega se niza z uporabo pojav parameter. Oglejte si spodnji primer:
java concat niz
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String';
V tem primeru je začetni položaj zamenljivega niza 2, ki je prišel po začetku prvega pojavljanja. Zato je pojav 2 postal pojav 1, pojav 3 pa pojav 2. Oglejte si spodnji rezultat:
Dodamo lahko dodaten parameter za izboljšanje regularnega izraza z uporabo argumentov tipa ujemanja. Na primer , ga lahko uporabimo za preverjanje, ali ujemanje razlikuje med velikimi in malimi črkami ali vključuje zaključevalce vrstic. Oglejte si spodnji primer, kjer podajamo a razlikuje med velikimi in malimi črkami in ujemanje, ki ne razlikuje med velikimi in malimi črkami:
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';
Tukaj je rezultat: