Привет. Сегодня мы рассмотрим как же можно заменить подстроку на другую подстроку в ячейке таблицы БД на MySQL или попросту посмотрим на альтернативу php функции STR_REPLACE в MySQL.

STR_REPLACE MySQL

MySQL аналог STR_REPLACE MySQL

В MySQL есть прекрасный аналог, который работает прямо в запросах к БД.
Выглядит он как:

REPLACE(haystack, needle, replace)

Соответственно, здесь: haystack (стог сена) — графа/колонка/данные где нужно искать строку для замены, needle — строка, которую нужно заменить, replace — строка на которую нужно осуществить замену needle.

Эту MySQL функцию можно использовать непосредственно в запросах UPDATE. Представляете насколько упростит жизнь использование этой функции, если нужно где-нибудь что-то заменить, а записей 2000000, и на PHP писать str_replace не хочется, да и долго будет работать.

Рассмотрим на примере STR_REPLACE MySQL

Всё достаточно просто, предположим, у нас есть таблица, в которой в каждой ячейке графы «Name» нужно заменить «Иван» на «Ваня»:

UPDATE my_table SET name=REPLACE(name, 'Иван', 'Ваня')

Или, например, усложним пример, и сделаем замены «Иван» на «Ваня», только для тех, у кого возраст (графа Age) меньше 18 лет (то есть не совершеннолетним):

UPDATE my_table SET name=REPLACE(name, 'Иван', 'Ваня') WHERE age<18

Теперь не нужно делать множество запросов на PHP, всё выполнится за считанные милисекунды (в зависимости от размера таблицы БД).

Полная документация по функции REPLACE (STR_REPLACE MySQL) доступна по адресу: REPLACE MySQL.

Надеюсь, эта статья поможет вам облегчить решение задачи по замене каких-либо данных в базах данных на MySQL.