Поиск и замена слов в строках на SQL
Часто в таблицах базы данных требуется произвести поиск и замену слова или подстроки. Для таких действий в 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».
Вопрос немного другой, но, в целом, вполне подходит для данной статьи.
у меня есть база, в которую я планирую заносить отчеты по бэкапам.
каждый сервер отправляет данные в данную таблицу.
Задача:
Если ID существует, то обновить данные, если id нет, то добавить данные.
Как-то так, я думаю, надо делать, но прошу скорректировать…
А так решение задачи зависит от СУБД
Например, в mysql для этих целей есть конструкция INSERT… ON DUPLICATE KEY UPDATE