Pokud potřebujete v MariaDB nahradit podřetězec jiným řetězcem, můžete použít dva přístupy.
REPLACE() Funkce
V MariaDB, REPLACE() Funkce je navržena speciálně k nahrazení podřetězce v jiném řetězci.
Při volání funkce poskytujete tři argumenty. Jedná se o řetězec, podřetězec a náhradní řetězec.
Příklad:
SELECT REPLACE('My dog likes to dig holes', 'dog', 'cat'); Výsledek:
+----------------------------------------------------+
| REPLACE('My dog likes to dig holes', 'dog', 'cat') |
+----------------------------------------------------+
| My cat likes to dig holes |
+----------------------------------------------------+
V tomto případě jsme nahradili podřetězec dog s cat .
Pokud se řetězec, který má být nahrazen, vyskytuje v řetězci vícekrát, budou nahrazeny všechny výskyty:
SELECT REPLACE('Black dogs and white dogs', 'dog', 'cat'); Výsledek:
+----------------------------------------------------+
| REPLACE('Black dogs and white dogs', 'dog', 'cat') |
+----------------------------------------------------+
| Black cats and white cats |
+----------------------------------------------------+
REPLACE() funkce provádí shodu s rozlišením velkých a malých písmen.
Viz Jak REPLACE() Více příkladů funguje v MariaDB.
REGEXP_REPLACE() Funkce
REGEXP_REPLACE() funkce je podobná funkci REPLACE() kromě toho, že vám umožňuje provádět porovnávání vzorů pomocí regulárních výrazů.
Tím vznikne REGEXP_REPLACE() výkonnější než REPLACE() , protože můžete porovnávat s částmi řetězce a nahradit tak podřetězce, které by bylo obtížnější nebo nemožné přiřadit pouhým použitím REPLACE() .
Příklad:
SELECT REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog'); Výsledek:
+-------------------------------------------------+
| REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog') |
+-------------------------------------------------+
| My dog has dogs |
+-------------------------------------------------+
Regulární výrazy mohou být velmi výkonné a tento příklad používá velmi jednoduchý příklad. Chcete-li použít REGEXP_REPLACE() efektivně, budete potřebovat znát správný vzor, který použijete pro požadovaný výsledek.
Je také možné zadat celý doslovný řetězec jako vzor, stejně jako byste použili s REPLACE() funkce.
Proto bychom mohli přepsat první příklad na této stránce tak, aby používal REGEXP_REPLACE() místo REPLACE() .
Zde je příklad, který je vede vedle sebe, aby ilustroval, co tím myslím:
SELECT
REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REPLACE()",
REGEXP_REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REGEXP_REPLACE()"; Výsledek:
+---------------------------+---------------------------+ | REPLACE() | REGEXP_REPLACE() | +---------------------------+---------------------------+ | My cat likes to dig holes | My cat likes to dig holes | +---------------------------+---------------------------+
Také REGEXP_REPLACE() funkce se řídí pravidly rozlišování malých a velkých písmen efektivního řazení. Párování se provádí bez rozlišení malých a velkých písmen u porovnávání bez rozlišení malých a velkých písmen a u porovnávání rozlišujících malá a velká písmena a u binárních dat. Citlivost řazení malých a velkých písmen však lze potlačit pomocí (?i ) a (?-i ) Příznaky PCRE.
Viz Jak REGEXP_REPLACE() Pracuje v MariaDB pro příklady rozlišování malých a velkých písmen a další.