MySQL REGEXP_REPLACE() -funktiota käytetään kuvioiden täsmäämiseen. Tämä toiminto etsii merkkijonosta säännöllisen lausekkeen mallia ja korvaa jokaisen kaavan esiintymän määritetyllä merkkijonolla, joka vastaa annettua säännöllisen lausekkeen mallia. Jos osuma löytyy, se palauttaa koko merkkijonon vaihtoineen. Jos vastaavuutta ei löydy, palautettu merkkijono on muuttumaton. Jos lauseke, kuviot ja korvaava merkkijono ovat NULL, funktio palauttaa NULL-arvon.
REGEXP_REPLACE(), REPLACE(), ja KÄÄNTÄ() toimi sisään MySQL ovat samat, paitsi että TRANSLATE antaa meille mahdollisuuden tehdä useita yhden merkin korvauksia ja REPLACE-funktio korvaa yhden kokonaisen merkkijonon toisella merkkijonolla, kun taas REGEXP_REPLACE etsii merkkijonoa säännöllisen lausekkeen mallia varten.
Syntaksi
Seuraava on perussyntaksi tämän toiminnon käyttämiseksi MySQL:ssä:
REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]])
Parametrin selitys
REGEXP_REPLACE()-funktion parametrien selitys on:
ilmaisu: Se on syötemerkkijono, jolla suoritamme haun säännöllisten lausekkeiden parametrien ja funktioiden kautta.
kuviot: Se edustaa alimerkkijonon säännöllistä lauseketta.
korvaa_merkkijono: Se on alimerkkijono, joka korvataan, jos osuma löytyy.
REGEXP_INSTR()-funktio käyttää useita valinnaisia parametreja, jotka on annettu alla:
pos: Sitä käytetään määrittämään sijainti lausekkeessa merkkijonossa haun aloittamiseksi. Jos emme määritä tätä parametria, se alkaa kohdasta 1.
Linuxin hakemiston uudelleennimeäminen
esiintyminen: Sitä käytetään määrittämään, mitä osuman esiintymää aiomme etsiä. Jos emme määritä tätä parametria, kaikki esiintymät korvataan.
match_type: Se on merkkijono, jonka avulla voimme tarkentaa säännöllistä lauseketta. Se käyttää seuraavia mahdollisia merkkejä vastaavuuden suorittamiseen.
Ymmärtäkäämme se eri esimerkein.
Esimerkki
Seuraava lause selittää perusesimerkin MySQL:n REGEXP_REPLACE-funktiosta.
mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String';
Tässä on tulos:
Oletetaan, että syötemerkkijonomme sisältää useita osumia merkkijonossa , tämä toiminto korvaa ne kaikki. Katso alla olevat lausunnot:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String';
Tässä on tulos:
Jos syötemerkkijono ja korvattava merkkijono eivät täsmää, lauseet palauttavat alkuperäisen merkkijonon. Katso alla oleva esimerkki:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String';
Tässä on tulos:
Jos haluamme korvata merkkijonon paikan määrittäminen vaihtamisen aloittamiseksi voimme käyttää REGEX_REPLACE-toimintoa seuraavasti:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String';
Tässä lausunnossa olemme määrittäneet paikan 2 vaihtamisen aloittamiseksi. Suorittamalla tämän kyselyn saamme alla olevan tulosteen, jossa voimme nähdä, että vaihdettavan merkkijonon ensimmäistä sijaintia ei korvata.
Tiedämme, että kaikki vastaavan merkkijonon esiintymät korvataan oletusarvoisesti. Meillä on kuitenkin myös mahdollisuus määrittää tietty esiintymä vastaavan merkkijonon korvaamiseksi käyttämällä esiintyminen parametri. Katso alla oleva esimerkki:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String';
Tässä esimerkissä vaihdettavan merkkijonon aloituspaikka on 2, joka tuli ensimmäisen esiintymän alkamisen jälkeen. Siksi esiintymästä 2 tuli esiintymä 1 ja esiintymästä 3 tuli esiintymä 2. Katso alla oleva tulos:
Voimme tarjota lisäparametrin säännöllisen lausekkeen tarkentamiseksi käyttämällä hakutyyppiargumentteja. Esimerkiksi , voimme käyttää sitä tarkistaaksemme, onko vastaavuudessa kirjainkoolla merkitystä vai onko siinä rivin päätteitä. Katso alla oleva esimerkki, jossa määritämme a kirjainkoolla ja kirjainkoolla ei ole merkitystä:
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';
Tässä on tulos: