MySQL REGEXP_REPLACE()-funksjonen brukes til mønstertilpasning. Denne funksjonen søker i en streng etter et regulært uttrykksmønster og erstatter hver forekomst av mønsteret med den angitte strengen som samsvarer med det gitte regulære uttrykksmønsteret. Hvis samsvaret blir funnet, returnerer det hele strengen sammen med erstatningene. Hvis det ikke finnes noe samsvar, er den returnerte strengen uendret. Hvis uttrykket, mønstrene og erstatningsstrengen er NULL, vil funksjonen returnere NULL.
REGEXP_REPLACE(), REPLACE(), og TRANSLATE() fungere i MySQL er fungerer som det samme, bortsett fra at TRANSLATE lar oss gjøre flere enkelttegnserstatninger og REPLACE-funksjonen erstatter en hel streng med en annen streng, mens REGEXP_REPLACE søker i en streng etter et regulært uttrykksmønster.
Syntaks
Følgende er en grunnleggende syntaks for å bruke denne funksjonen i MySQL:
REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]])
Parameter Forklaring
Forklaringen på REGEXP_REPLACE() funksjonsparametere er:
uttrykk: Det er en inndatastreng som vi skal utføre søk på gjennom parametere og funksjoner for regulære uttrykk.
mønstre: Det representerer det regulære uttrykksmønsteret for en delstreng.
replace_string: Det er en understreng som vil bli erstattet hvis treffet blir funnet.
REGEXP_INSTR()-funksjonen bruker forskjellige valgfrie parametere som er gitt nedenfor:
pos: Den brukes til å spesifisere posisjonen i uttrykket i strengen for å starte søket. Hvis vi ikke spesifiserer denne parameteren, vil den starte på posisjon 1.
hendelse: Den brukes til å spesifisere hvilken forekomst av et samsvar vi skal søke etter. Hvis vi ikke spesifiserer denne parameteren, erstattes alle forekomster.
match_type: Det er en streng som lar oss avgrense det regulære uttrykket. Den bruker følgende mulige tegn for å utføre matching.
La oss forstå det med forskjellige eksempler.
Eksempel
Følgende setning forklarer det grunnleggende eksemplet på REGEXP_REPLACE-funksjonen i MySQL.
mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String';
Her er utgangen:
Anta at inndatastrengen vår inneholder flere treff i strengen , så vil denne funksjonen erstatte dem alle. Se utsagnene nedenfor:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String';
Her er utgangen:
Hvis inndatastrengen og den utskiftbare strengen ikke samsvarer, returnerer setningene den opprinnelige strengen. Se eksemplet nedenfor:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String';
Her er utgangen:
Hvis vi ønsker å erstatte strengen med spesifisere stillingen for å starte utskifting kan vi bruke REGEX_REPLACE-funksjonen som følger:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String';
I denne uttalelsen har vi spesifisert stillingen som 2 for å starte utskiftingen. Ved å utføre denne spørringen vil vi få utdataene nedenfor der vi kan se at den første posisjonen til den utskiftbare strengen ikke er erstattet.
Vi vet at alle forekomster av den samsvarende strengen erstattes som standard. Vi har imidlertid også en mulighet til å spesifisere den spesifikke forekomsten for å erstatte den samsvarende strengen ved å bruke hendelse parameter. Se eksemplet nedenfor:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String';
I dette eksemplet er startposisjonen til den utskiftbare strengen 2 som kom etter at den første forekomsten hadde startet. Derfor ble forekomst 2 til forekomst 1, og forekomst 3 ble til forekomst 2. Se utdataene nedenfor:
Vi kan gi en ekstra parameter for å avgrense det regulære uttrykket ved å bruke matchtype-argumentene. For eksempel , kan vi bruke det til å bekrefte om samsvaret skiller mellom store og små bokstaver eller inkluderer linjeavslutninger. Se eksemplet nedenfor der vi spesifiserer en skiller mellom store og små bokstaver og treff uten store og små bokstaver:
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';
Her er utgangen: