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