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ší.