Функцията MySQL REGEXP_REPLACE() се използва за съвпадение на шаблони. Тази функция търси низ за шаблон на регулярен израз и замества всяко появяване на шаблона с посочения низ, който съответства на дадения шаблон на регулярен израз. Ако се намери съвпадение, той връща целия низ заедно със заместванията. Ако не бъде намерено съвпадение, върнатият низ остава непроменен. Ако изразът, шаблоните и заместващият низ са NULL, функцията ще върне NULL.
REGEXP_REPLACE(), REPLACE(), и ПРЕВОД() функция в MySQL работят по същия начин, с изключение на това, че TRANSLATE ни позволява да правим множество замествания с един знак и функцията REPLACE заменя един цял низ с друг низ, докато REGEXP_REPLACE търси низ за модел на регулярен израз.
Синтаксис
Следното е основен синтаксис за използване на тази функция в MySQL:
REGEXP_REPLACE (expression, pattern, replace_string[, pos[, occurrence[, match_type]]])
Параметър Обяснение
Обяснението на параметрите на функцията REGEXP_REPLACE() е:
израз: Това е входен низ, върху който ще извършим търсене чрез параметри и функции на регулярни изрази.
модели: Той представлява модела на регулярен израз за подниз.
замени_низ: Това е подниз, който ще бъде заменен, ако бъде намерено съвпадение.
Функцията REGEXP_INSTR() използва различни незадължителни параметри, които са дадени по-долу:
позиция: Използва се за указване на позицията в израза в низа, за да започне търсенето. Ако не посочим този параметър, той ще започне от позиция 1.
събитие: Използва се за указване на кое срещане на съвпадение ще търсим. Ако не посочим този параметър, всички срещания се заменят.
съвпадение_тип: Това е низ, който ни позволява да прецизираме регулярния израз. Той използва следните възможни символи за извършване на съвпадение.
Нека го разберем с различни примери.
Пример
Следното изявление обяснява основния пример на функцията REGEXP_REPLACE в MySQL.
mysql> SET @str = 'Javatpoint is a great websites'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'great', 'an educational') AS 'Replaceable String';
Ето резултата:
Да предположим, че нашият входен низ съдържа множество съвпадения в рамките на низа , тогава тази функция ще замени всички тях. Вижте изявленията по-долу:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'PGDCA') AS 'Replaceable String';
Ето резултата:
Ако входният низ и заменяемият низ нямат съвпадение, изразите връщат оригиналния низ. Вижте примера по-долу:
mysql> SET @str = 'BCA MCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'MBA', 'PGDCA') AS 'Resultant String';
Ето резултата:
Ако искаме да заменим низа с уточняване на позицията за да започнем замяна, можем да използваме функцията REGEX_REPLACE, както следва:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2) AS 'Replaceable String';
В това изявление сме посочили позицията като 2, за да започне замяната. Изпълнявайки тази заявка, ще получим резултата по-долу, където можем да видим, че първата позиция на заменяемия низ не е заменена.
Знаем, че всички срещания на съвпадащия низ се заменят по подразбиране. Имаме обаче и опция да посочим конкретното събитие за замяна на съвпадащия низ, като използваме възникване параметър. Вижте примера по-долу:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Replaceable String';
В този пример началната позиция на заменяемия низ е 2, която идва след началото на първото срещане. Следователно събитие 2 стана събитие 1, а събитие 3 стана събитие 2. Вижте резултата по-долу:
Можем да предоставим допълнителен параметър за прецизиране на регулярния израз, като използваме аргументите за типа съвпадение. Например , можем да го използваме, за да проверим дали съвпадението е чувствително към малки и главни букви или включва терминатори на редове. Вижте примера по-долу, където посочваме a различаващ главни от малки букви и съвпадение без значение за регистъра:
mysql> SET @str = 'BBA BCA BBA BCA BBA'; mysql> SELECT @str AS 'Original String', REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'c') AS ' Case-Sensitive', REGEXP_REPLACE(@str, 'bba', 'MCA', 1, 0, 'i') AS ' Case-Insensitive';
Ето резултата: