В MariaDB, REPLACE()
е вградена функция за низ, която ви позволява да замените част от низ с друг низ.
Функцията приема три аргумента:низ, подниз за замяна и низ, с който да се замени поднизът.
Синтаксис
Синтаксисът е така:
REPLACE(str,from_str,to_str)
Където str
е низът и from_str
е поднизът за замяна и to_str
е низът, с който да се замени този подниз.
Пример
Ето един основен пример:
SELECT REPLACE('Black dog', 'dog', 'cat');
Резултат:
+------------------------------------+ | REPLACE('Black dog', 'dog', 'cat') | +------------------------------------+ | Black cat | +------------------------------------+
В този случай заменихме поднизът dog
с cat
.
Множество съвпадения
Ако низът, който трябва да бъде заменен, се появи няколко пъти в низа, всички събития се заменят:
SELECT REPLACE('Black dogs and white dogs', 'dog', 'cat');
Резултат:
+----------------------------------------------------+ | REPLACE('Black dogs and white dogs', 'dog', 'cat') | +----------------------------------------------------+ | Black cats and white cats | +----------------------------------------------------+
Няма съвпадение
Ако поднизът не се среща в низа, REPLACE()
връща низа непроменен:
SELECT REPLACE('Black dog', 'horse', 'cat');
Резултат:
+--------------------------------------+ | REPLACE('Black dog', 'horse', 'cat') | +--------------------------------------+ | Black dog | +--------------------------------------+
Чувствителност на регистрите
REPLACE()
функцията извършва съвпадение с чувствителност към малки и големи букви:
SELECT REPLACE('Black dog', 'Dog', 'Cat');
Резултат:
+------------------------------------+ | REPLACE('Black dog', 'Dog', 'Cat') | +------------------------------------+ | Black dog | +------------------------------------+
В този пример корпусът не съвпада и така нищо не е заменено.
Празни низове
Ето какво се случва, когато се подаде празен низ за всеки даден аргумент:
SELECT
REPLACE('', 'dog', 'cat') AS "1",
REPLACE('Black dog', '', 'cat') AS "2",
REPLACE('Black dog', 'dog', '') AS "3";
Резултат:
+------+-----------+--------+ | 1 | 2 | 3 | +------+-----------+--------+ | | Black dog | Black | +------+-----------+--------+
Така че в този случай:
- Подаване на празен низ за първоначалния низ връща празен низ.
- Подаване на празен низ за втория аргумент връща оригиналния низ.
- Подаване на празен низ за третия аргумент премахва низа, който трябва да бъде заменен от низа.
Символ за интервал
Празният низ не е същият като символа за интервал.
Ето какво се случва, когато променим празния низ в интервал:
SELECT
REPLACE(' ', 'dog', 'cat') AS "1",
REPLACE('Black dog', ' ', 'cat') AS "2",
REPLACE('Black dog', 'dog', ' ') AS "3";
Резултат:
+------+-------------+---------+ | 1 | 2 | 3 | +------+-------------+---------+ | | Blackcatdog | Black | +------+-------------+---------+
Следователно, ако низът не е нищо друго освен интервал, тогава можем да го заменим с друг низ:
SELECT REPLACE(' ', ' ', 'cat');
Резултат:
+--------------------------+ | REPLACE(' ', ' ', 'cat') | +--------------------------+ | cat | +--------------------------+
Нулеви аргументи
Предоставяне на null
води до null
:
SELECT
REPLACE(null, 'dog', 'cat') AS "1",
REPLACE('Black dog', null, 'cat') AS "2",
REPLACE('Black dog', 'dog', null) AS "3";
Резултат:
+------+------+------+ | 1 | 2 | 3 | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
Липсващ аргумент
Извикване на REPLACE()
с грешен брой аргументи или без подаване на аргументи води до грешка:
SELECT REPLACE();
Резултат:
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