Поиск и замена слов в строках на SQL

Поиск и замена слов в строках на SQL
Комментарии: 7

Часто в таблицах базы данных требуется произвести поиск и замену слова или подстроки. Для таких действий в SQL есть специальная функция «Replace». Рассмотрим на примерах как она работает в MySQL.

Внимание! При массовой обработке данных в базах данных не забывайте предварительно делать резервную копию.

Допустим, у компании поменялось название и требуется его заменить в таблице «table_name» на новое. Для этого выполняем запрос на обновление поля «field_text» с использованием нашей функции.

UPDATE `table_name` SET `field_text` = REPLACE(`field_text`,'АО Газмяс','ООО Газмяс') WHERE `field_text` LIKE '%АО Газмяс%';

В качестве параметров передаём содержимое текущего поля, подстроки для поиска и замены. Секцию «WHERE» можно опустить, но препочтительно чтобы операция «UPDATE» применялась только к тем записям, где предварительно обнаружилась искомая подстрока.

Удаление подстроки из таблицы

Для удаления произвольной подстроки используем ту же функцию, но последний параметр указываем пустым.

UPDATE `table_name` SET `field_text` = REPLACE(`field_text`,'АО Газмяс','');

Добавление подстрок к полю

Существую случаи когда в начало или конец поля требуется что-то добавить. Например, новое предложение. В этих случая в SQL используют функцию объединения строк — «Concat».

UPDATE `table_name` SET `field_text` = CONCAT(`field_text`,' THE END!');

Эту же задачу можно решить и спомощью «Replace». При этом появляется возможность добавлять подстроку в начало поля.

UPDATE `table_name` SET `field_text` = REPLACE(`field_text`,`field_text`,'START! ' + `field_text` + ' THE END!');

В примере к каждому полю таблицы в начало добавляется подстрока «START!», а в конец — « THE END!».

Приведённые SQL запросы можно выполнять как на PHP, так и через скрипты администрирования, вроде «phpMyAdmin».

Темы:
SQL
Ещё интересное — 2
Комментарии —
  1. Максим
    Максим19 ноября 2019, 18:22#
    Спасибо за статью. Помогло предложенное решение.
    1. Andy Si20 ноября 2019, 14:13#
      Отлично… уже значит не зря писал :)
    2. Дмитрий Фёдоров
      Дмитрий Фёдоров16 мая 2022, 11:50#
      а как сделать замену во всех таблицах? особенно когда нет списка всех такблиц, где может находиться нужное значение
      1. Andy Si16 мая 2022, 12:29(был изменён)#
        На чистом SQL никак. Можно экспортировать базу в текстовый файл, заменить всё в нём и импортировать обратно.
        1. Дмитрий Фёдоров
          Дмитрий Фёдоров16 мая 2022, 12:32#
          Я обычно так и делаю, но Notepad++ зависает очень часто, из за большого количества данных в одной строке. Как тут быть?
          1. Andy Si16 мая 2022, 12:37#
            Sublime Text неплохо справляется с обработкой больших текстовых файлов. Но если файл рейально очень большой, то похоже придётся писать какую-нибудь программу для его обработки, готовых решений не встречал, хотя возможно и есть.
      2. Дмитрий Фёдоров
        Дмитрий Фёдоров16 мая 2022, 12:39#
        Благодарю, попробую!
        © REALADMIN.RU   2022 г.
        Страница сгенерирована: 0,1569 s | 4 mb.
        На каком уровне Вы играете в шахматы?
        OPROS