sql >> Databáze >  >> RDS >> MariaDB

2 způsoby, jak nahradit podřetězec v MariaDB

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


  1. Použití Jenkinse s Kubernetes AWS, část 3

  2. Připojte se ke vzdálenému serveru postgresql na amazon ec2

  3. Jak mohu zavést více podmínek v operátoru LIKE?

  4. Upozornění na sloupec v cizím klíči, který není součástí indexu, během kompilace místnosti Android. Co to znamená?