Ако трябва да замените подниз с друг низ в MariaDB, ето два подхода, които можете да използвате.
REPLACE()
Функция
В MariaDB, REPLACE()
функцията е проектирана специално за замяна на подниз в друг низ.
Вие предоставяте три аргумента при извикване на функцията. Това са низът, поднизът и заместващият низ.
Пример:
SELECT REPLACE('My dog likes to dig holes', 'dog', 'cat');
Резултат:
+----------------------------------------------------+ | REPLACE('My dog likes to dig holes', 'dog', 'cat') | +----------------------------------------------------+ | My cat likes to dig holes | +----------------------------------------------------+
В този случай заменихме поднизът 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()
функцията извършва съвпадение с чувствителност към малки и големи букви.
Вижте как REPLACE()
Работи в MariaDB за повече примери.
REGEXP_REPLACE()
Функция
REGEXP_REPLACE()
функцията е подобна на REPLACE()
функция, с изключение на това, че ви позволява да правите съвпадение на шаблони с помощта на регулярни изрази.
Това прави REGEXP_REPLACE()
по-мощен от REPLACE()
, тъй като можете да съпоставите с части от низ, за да замените поднизове, които биха били по-трудни или невъзможни за съпоставяне, когато просто използвате REPLACE()
.
Пример:
SELECT REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog');
Резултат:
+-------------------------------------------------+ | REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog') | +-------------------------------------------------+ | My dog has dogs | +-------------------------------------------------+
Регулярните изрази могат да бъдат много мощни и този пример използва много прост пример. За да използвате REGEXP_REPLACE()
ефективно, ще трябва да знаете правилния модел, който да използвате за желания резултат.
Възможно е също да предоставите пълния литерален низ като шаблон, точно както бихте използвали с REPLACE()
функция.
Следователно бихме могли да пренапишем първия пример на тази страница, за да използваме REGEXP_REPLACE()
вместо REPLACE()
.
Ето един пример, който ги изпълнява една до друга, за да илюстрира какво имам предвид:
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()";
Резултат:
+---------------------------+---------------------------+ | REPLACE() | REGEXP_REPLACE() | +---------------------------+---------------------------+ | My cat likes to dig holes | My cat likes to dig holes | +---------------------------+---------------------------+
Също така, REGEXP_REPLACE()
функцията следва правилата за чувствителност към малки и големи букви на ефективното съпоставяне. Съпоставянето се извършва независимо от главните и малки букви за съпоставянията, които не са чувствителни към малки и големи букви, и чувствително за съпоставянията, чувствителни към малки и големи букви и за двоични данни. Въпреки това чувствителността към малки и главни букви може да бъде отменена с помощта на (?i
) и (?-i
) Флагове на PCRE.
Вижте как REGEXP_REPLACE()
Работи в MariaDB за примери за чувствителност към малки и големи букви и други.