Funkcija MySQL REGEXP_REPLACE() koristi se za podudaranje uzoraka. Ova funkcija traži u nizu uzorak regularnog izraza i zamjenjuje svako pojavljivanje uzorka s navedenim nizom koji odgovara zadanom uzorku regularnog izraza. Ako se pronađe podudaranje, vraća cijeli niz zajedno sa zamjenama. Ako se ne pronađe podudaranje, vraćeni niz je nepromijenjen. Ako su izraz, uzorci i zamjenski niz NULL, funkcija će vratiti NULL.
REGEXP_REPLACE(), REPLACE(), i TRANSLATE() funkcija u MySQL rade isto, osim što nam TRANSLATE omogućuje višestruke zamjene od jednog znaka, a funkcija REPLACE zamjenjuje jedan cijeli niz drugim nizom, dok REGEXP_REPLACE traži niz za uzorak regularnog izraza.
Sintaksa
Slijedi osnovna sintaksa za korištenje ove funkcije u MySQL-u:
REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]])
Parametar Objašnjenje
Objašnjenje parametara funkcije REGEXP_REPLACE() je:
izraz: To je ulazni niz na kojem ćemo vršiti pretragu parametara i funkcija regularnih izraza.
uzorci: Predstavlja uzorak regularnog izraza za podniz.
zamijeni_string: To je podniz koji će biti zamijenjen ako se pronađe podudaranje.
Funkcija REGEXP_INSTR() koristi razne izborne parametre koji su navedeni u nastavku:
položaj: Koristi se za određivanje položaja u izrazu unutar niza za početak pretraživanja. Ako ne navedemo ovaj parametar, počet će na poziciji 1.
pojava: Koristi se za određivanje za koju pojavu podudaranja ćemo tražiti. Ako ne navedemo ovaj parametar, sva se pojavljivanja zamjenjuju.
match_type: To je niz koji nam omogućuje pročišćavanje regularnog izraza. Za uparivanje koristi sljedeće moguće znakove.
Razumimo to na raznim primjerima.
Primjer
Sljedeća izjava objašnjava osnovni primjer funkcije REGEXP_REPLACE u MySQL-u.
mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String';
Evo rezultata:
Pretpostavimo da naš ulazni niz sadrži više podudaranja unutar niza , onda će ova funkcija zamijeniti sve njih. Pogledajte izjave u nastavku:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String';
Evo rezultata:
Ako ulazni niz i zamjenjivi niz nemaju podudaranja, izjave vraćaju izvorni niz. Pogledajte primjer u nastavku:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String';
Evo rezultata:
Ako želimo zamijeniti niz za navodeći položaj za početak zamjene možemo koristiti funkciju REGEX_REPLACE na sljedeći način:
j e s t
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String';
U ovoj izjavi naveli smo poziciju 2 za početak zamjene. Izvršavajući ovaj upit, dobit ćemo donji izlaz gdje možemo vidjeti da prva pozicija zamjenjivog niza nije zamijenjena.
Znamo da su sva pojavljivanja odgovarajućeg niza zamijenjena prema zadanim postavkama. Međutim, također imamo opciju za specificiranje specifične pojave za zamjenu odgovarajućeg niza pomoću pojava parametar. Pogledajte primjer u nastavku:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String';
U ovom primjeru, početna pozicija zamjenjivog niza je 2 koja je došla nakon što je počelo prvo pojavljivanje. Stoga je pojava 2 postala pojava 1, a pojava 3 postala je pojava 2. Pogledajte donji rezultat:
Možemo osigurati dodatni parametar za pročišćavanje regularnog izraza korištenjem argumenata tipa podudaranja. Na primjer , možemo ga upotrijebiti za provjeru je li podudaranje osjetljivo na velika i mala slova ili uključuje terminatore retka. Pogledajte donji primjer gdje specificiramo a osjetljivo na velika i mala slova i podudaranje koje ne razlikuje velika i mala slova:
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';
Evo rezultata: