Функція 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.
виникнення: Він використовується для вказівки відповідності, яку ми будемо шукати. Якщо ми не вказуємо цей параметр, усі входження замінюються.
match_type: Це рядок, який дозволяє нам уточнити регулярний вираз. Він використовує наступні можливі символи для виконання відповідності.
Розберемося в цьому на різних прикладах.
приклад
Наступний оператор пояснює базовий приклад функції 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';
Ось результат: