Funkcia MySQL REGEXP_REPLACE() sa používa na porovnávanie vzorov. Táto funkcia vyhľadá v reťazci vzor regulárneho výrazu a nahradí každý výskyt vzoru so zadaným reťazcom, ktorý zodpovedá danému vzoru regulárneho výrazu. Ak sa nájde zhoda, vráti celý reťazec spolu s náhradami. Ak sa nenájde žiadna zhoda, vrátený reťazec sa nezmení. Ak sú výraz, vzory a náhradný reťazec NULL, funkcia vráti hodnotu NULL.
REGEXP_REPLACE(), REPLACE(), a the TRANSLATE() funkcia v MySQL fungujú rovnako, až na to, že TRANSLATE nám umožňuje vykonávať viaceré jednoznakové substitúcie a funkcia REPLACE nahrádza jeden celý reťazec iným reťazcom, zatiaľ čo REGEXP_REPLACE hľadá v reťazci vzor regulárneho výrazu.
Syntax
Nasleduje základná syntax na použitie tejto funkcie v MySQL:
REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]])
Vysvetlenie parametra
Vysvetlenie parametrov funkcie REGEXP_REPLACE() je:
výraz: Je to vstupný reťazec, na ktorom vykonáme vyhľadávanie cez parametre a funkcie regulárnych výrazov.
rozloženie mriežky
vzory: Predstavuje vzor regulárneho výrazu pre podreťazec.
nahradiť_reťazec: Je to podreťazec, ktorý bude nahradený, ak sa nájde zhoda.
Funkcia REGEXP_INSTR() používa rôzne voliteľné parametre, ktoré sú uvedené nižšie:
poz.: Používa sa na určenie pozície vo výraze v reťazci na spustenie vyhľadávania. Ak tento parameter nešpecifikujeme, začne na pozícii 1.
výskyt: Používa sa na zadanie, ktorý výskyt zhody ideme hľadať. Ak tento parameter neuvedieme, všetky výskyty sa nahradia.
typ_zhody: Je to reťazec, ktorý nám umožňuje spresniť regulárny výraz. Na vykonanie párovania používa nasledujúce možné znaky.
np.argmax
Poďme to pochopiť na rôznych príkladoch.
Príklad
Nasledujúce vyhlásenie vysvetľuje základný príklad funkcie 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';
Tu je výstup:
Predpokladajme, že náš vstupný reťazec obsahuje viaceré zhody v reťazci , potom táto funkcia nahradí všetky. Pozrite si nasledujúce vyhlásenia:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String';
Tu je výstup:
Ak sa vstupný reťazec a vymeniteľný reťazec nezhodujú, príkazy vrátia pôvodný reťazec. Pozrite si nasledujúci príklad:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String';
Tu je výstup:
reťazec na char
Ak chceme reťazec nahradiť o upresnenie polohy na spustenie výmeny môžeme použiť funkciu REGEX_REPLACE takto:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String';
V tomto vyhlásení sme zadali pozíciu ako 2 na spustenie výmeny. Po vykonaní tohto dotazu dostaneme výstup uvedený nižšie, kde vidíme, že prvá pozícia vymeniteľného reťazca nie je nahradená.
Vieme, že všetky výskyty zodpovedajúceho reťazca sú štandardne nahradené. Máme však tiež možnosť určiť konkrétny výskyt na nahradenie zhodného reťazca pomocou výskyt parameter. Pozrite si nasledujúci príklad:
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 tomto príklade je počiatočná pozícia vymeniteľného reťazca 2, ktorá nastala po spustení prvého výskytu. Preto sa výskyt 2 stal výskytom 1 a výskyt 3 sa stal výskytom 2. Pozrite si výstup nižšie:
Môžeme poskytnúť ďalší parameter na spresnenie regulárneho výrazu pomocou argumentov typu zhody. Napríklad , môžeme ho použiť na overenie, či sa v zhode rozlišujú malé a veľké písmená alebo či obsahuje zakončovacie znaky riadku. Pozrite si príklad nižšie, kde špecifikujeme a rozlišovať malé a veľké písmená a zhoda bez rozlišovania malých a veľkých písmen:
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';
Tu je výstup: