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

Jak REPLACE() funguje v MariaDB

V MariaDB REPLACE() je vestavěná funkce řetězce, která vám umožňuje nahradit část řetězce jiným řetězcem.

Funkce přijímá tři argumenty:řetězec, podřetězec, který se má nahradit, a řetězec, kterým se má podřetězec nahradit.

Syntaxe

Syntaxe vypadá takto:

REPLACE(str,from_str,to_str)

Kde str je řetězec a from_str je podřetězec, který se má nahradit, a to_str je řetězec, kterým se má tento podřetězec nahradit.

Příklad

Zde je základní příklad:

SELECT REPLACE('Black dog', 'dog', 'cat');

Výsledek:

+------------------------------------+
| REPLACE('Black dog', 'dog', 'cat') |
+------------------------------------+
| Black cat                          |
+------------------------------------+

V tomto případě jsme nahradili podřetězec dog s cat .

Více shod

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                          |
+----------------------------------------------------+

Žádná shoda

Pokud se podřetězec v řetězci nevyskytuje, REPLACE() vrátí řetězec beze změny:

SELECT REPLACE('Black dog', 'horse', 'cat');

Výsledek:

+--------------------------------------+
| REPLACE('Black dog', 'horse', 'cat') |
+--------------------------------------+
| Black dog                            |
+--------------------------------------+

Rozlišovat malá a velká písmena

REPLACE() funkce provádí shodu rozlišující malá a velká písmena:

SELECT REPLACE('Black dog', 'Dog', 'Cat');

Výsledek:

+------------------------------------+
| REPLACE('Black dog', 'Dog', 'Cat') |
+------------------------------------+
| Black dog                          |
+------------------------------------+

V tomto příkladu se případ neshodoval, a tak nebylo nic nahrazeno.

Prázdné řetězce

Co se stane, když je pro každý daný argument předán prázdný řetězec:

SELECT 
    REPLACE('', 'dog', 'cat') AS "1",
    REPLACE('Black dog', '', 'cat') AS "2",
    REPLACE('Black dog', 'dog', '') AS "3";

Výsledek:

+------+-----------+--------+
| 1    | 2         | 3      |
+------+-----------+--------+
|      | Black dog | Black  |
+------+-----------+--------+

Takže v tomto případě:

  • Předáním prázdného řetězce pro počáteční řetězec se vrátí prázdný řetězec.
  • Předáním prázdného řetězce pro druhý argument se vrátí původní řetězec.
  • Předáním prázdného řetězce pro třetí argument odstraníte z řetězce řetězec, který má být nahrazen.

Mezerní znak

Prázdný řetězec není totéž jako znak mezery.

Zde je to, co se stane, když změníme prázdný řetězec na mezeru:

SELECT 
    REPLACE(' ', 'dog', 'cat') AS "1",
    REPLACE('Black dog', ' ', 'cat') AS "2",
    REPLACE('Black dog', 'dog', ' ') AS "3";

Výsledek:

+------+-------------+---------+
| 1    | 2           | 3       |
+------+-------------+---------+
|      | Blackcatdog | Black   |
+------+-------------+---------+

Pokud tedy řetězec není nic jiného než mezera, můžeme jej nahradit jiným řetězcem:

SELECT REPLACE(' ', ' ', 'cat');

Výsledek:

+--------------------------+
| REPLACE(' ', ' ', 'cat') |
+--------------------------+
| cat                      |
+--------------------------+

Nulové argumenty

Poskytování null výsledkem je null :

SELECT 
    REPLACE(null, 'dog', 'cat') AS "1",
    REPLACE('Black dog', null, 'cat') AS "2",
    REPLACE('Black dog', 'dog', null) AS "3";

Výsledek:

+------+------+------+
| 1    | 2    | 3    |
+------+------+------+
| NULL | NULL | NULL |
+------+------+------+

Chybí argument

Volání REPLACE() s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:

SELECT REPLACE();

Výsledek:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

  1. Knihovna není načtena:/usr/local/opt/readline/lib/libreadline.6.2.dylib

  2. Co je MariaDB Enterprise Cluster?

  3. Aktuální stav správy zálohování Open Source pro PostgreSQL

  4. Co je MySQL ekvivalentem funkce CHOOSE() SQL Serveru?