Ако трябва да замените подниз с друг низ в 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 за примери за чувствителност към малки и големи букви и други.