Funkce MySQL REGEXP_REPLACE() se používá pro porovnávání vzorů. Tato funkce vyhledá v řetězci vzor regulárního výrazu a nahradí každý výskyt vzoru se zadaným řetězcem, který odpovídá danému vzoru regulárního výrazu. Pokud je nalezena shoda, vrátí celý řetězec spolu s náhradami. Pokud není nalezena žádná shoda, vrácený řetězec se nezmění. Pokud mají výraz, vzory a nahrazující řetězec hodnotu NULL, funkce vrátí hodnotu NULL.
REGEXP_REPLACE(), REPLACE(), a the TRANSLATE() funkce v MySQL fungují stejně, až na to, že TRANSLATE nám umožňuje provádět více jednoznakových substitucí a funkce REPLACE nahrazuje jeden celý řetězec jiným řetězcem, zatímco REGEXP_REPLACE hledá v řetězci vzor regulárního výrazu.
Syntax
Níže je uvedena základní syntaxe pro použití této funkce v MySQL:
REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]])
Vysvětlení parametru
Vysvětlení parametrů funkce REGEXP_REPLACE() je:
výraz: Je to vstupní řetězec, na kterém budeme vyhledávat parametry a funkce regulárních výrazů.
otázky k pohovoru v jazyce java
vzory: Představuje vzor regulárního výrazu pro podřetězec.
nahradit_řetězec: Je to podřetězec, který bude nahrazen, pokud bude nalezena shoda.
Funkce REGEXP_INSTR() používá různé volitelné parametry, které jsou uvedeny níže:
zrušit poslední potvrzení
pozice: Používá se k určení pozice ve výrazu v řetězci pro zahájení vyhledávání. Pokud tento parametr neuvedeme, začne na pozici 1.
výskyt: Slouží k určení, který výskyt shody budeme hledat. Pokud tento parametr neuvedeme, budou nahrazeny všechny výskyty.
match_type: Je to řetězec, který nám umožňuje upřesnit regulární výraz. K provádění porovnávání používá následující možné znaky.
Pojďme to pochopit na různých příkladech.
Příklad
Následující příkaz vysvětluje základní příklad funkce REGEXP_REPLACE v MySQL.
římské číslice 1-100
mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String';
Zde je výstup:
Předpokládejme, že náš vstupní řetězec obsahuje více shod v řetězci , pak tato funkce nahradí všechny. Viz níže uvedená prohlášení:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String';
Zde je výstup:
Pokud vstupní řetězec a nahraditelný řetězec nemají shodu, příkazy vrátí původní řetězec. Viz níže uvedený příklad:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String';
Zde je výstup:
Pokud chceme řetězec nahradit za upřesnění polohy pro zahájení výměny můžeme použít funkci REGEX_REPLACE takto:
jak číst ze souboru csv v java
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 prohlášení jsme specifikovali pozici jako 2 pro zahájení výměny. Provedením tohoto dotazu získáme níže uvedený výstup, kde vidíme, že první pozice nahraditelného řetězce není nahrazena.
Víme, že všechny výskyty shodného řetězce jsou ve výchozím nastavení nahrazeny. Máme však také možnost určit konkrétní výskyt pro nahrazení shodného řetězce pomocí výskyt parametr. Viz níže uvedený pří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 příkladu je počáteční pozice vyměnitelného řetězce 2, která přišla poté, co začal první výskyt. Proto se výskyt 2 stal výskytem 1 a výskyt 3 se stal výskytem 2. Viz níže uvedený výstup:
Můžeme poskytnout další parametr pro upřesnění regulárního výrazu pomocí argumentů typu shody. Například , můžeme jej použít k ověření, zda shoda rozlišuje velká a malá písmena nebo zda obsahuje zakončovací znaky řádku. Viz níže uvedený příklad, kde specifikujeme a citlivý na velká písmena a shoda bez rozlišení velkých a malý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';
Zde je výstup: