Содержание
Чтобы не забыть и впоследствии освежить память
Чтобы изменить значение в поле в таблице БД необходимо выполнить запрос UPDATE.
Общий синтаксис запроса UPDATE
UPDATE заменит значения текущих полей таблицы на новые значения.
SET устанавливает какие поля изменять и новые значения, которые нужно присвоить этим полям.
WHERE (если необходимо) — условие на изменение определенных записей. Если WHERE не указан, изменены будут все записи.
При указании параметра LOW_PRIORITY, выполнение UPDATE задержится пока другие клиенты читают таблицу.
Пример запроса на изменение всех записей поля «apple» таблицы «fruit» на определенное значение
Пример запроса с WHERE который изменяет определенную запись:
При изменении значения поля можно использовать его текущее значение.
Пример запроса увеличивающего значение поля price в 2 раза:
SET в UPDATE вычисляет выражения слева направо.
Пример запроса который удваивает цену (поле price), а потом уменьшает его на 10:
Запрос UPDATE возвратит количество полей, которые были изменены в этом запросе.
Использование LIMIT позволит изменять заданное количество записей.
При работе над проектом возникла задача: во всех статьях сайта обнаружить и заменить одно строковое значение, на другое. С учетом того, что таких страниц больше пяти сотен, в ручную заниматься этим, совершенно нерационально. Все страницы формируются из статей, размещенных в таблице БД. Следовательно, задача сводится к обработке всех записей таблицы, поиску в них нужного стокового значения и его замены на новое.
Часто для таких задач прибегают к использованию регулярных выражений или делают PHP-скрипт, который обрабатывает каждую строку по отдельности.
Но данную задачу гораздо проще выполнить простым SQL запросом. Для такой ситуации, SQL располагает функцией REPLACE. Эта функция позволяет очень просто удалить или заменить часть текста в строке.
REPLACE( "исходная строка" , "искомое значение" , [ "значение для замены" ] )
Замена значения в строке запросом SQL
Следовательно, для замены строки значения "10000" во всех строках таблицы на "15000", используем запрос:
UPDATE pages SET content = REPLACE (content, "10000" , "15000" );
Такой запрос обработает все строки таблицы pages, исправив значение поля content, если оно содержит искомую фразу "10000".
Удаление текста в строке запросом SQL
Для удаления используем подобный запрос, в котором укажем либо пустую строку третьим параметром, либо просто не указывая этот параметр:
UPDATE pages SET content = REPLACE (content, "10000" , "" );
UPDATE pages SET content = REPLACE (content, "10000" );
В результате, в каждой строке таблицы pages, во всех значений поля content будет удалено текстовое значение 10000.
* Подобный механизм можно использовать для очистки или замены тегов, но нужно быть внимательным. Так как здесь идет сравнение строк строго по равенству, то может возникнуть ошибка и теги, содержащие классы или стили удалены не будут.
Часто в таблицах базы данных требуется произвести поиск и замену слова или подстроки. Для таких действий в SQL есть специальная функция «Replace». Рассмотрим на примерах как она работает в MySQL.
Внимание! При массовой обработке данных в базах данных не забывайте предварительно делать резервную копию.
Допустим, у компании поменялось название и требуется его заменить в таблице «table_name» на новое. Для этого выполняем запрос на обновление поля «field_text» с использованием нашей функции.
В качестве параметров передаём содержимое текущего поля, подстроки для поиска и замены. Секцию «WHERE» можно опустить, но препочтительно чтобы операция «UPDATE» применялась только к тем записям, где предварительно обнаружилась искомая подстрока.
Удаление подстроки из таблицы
Для удаления произвольной подстроки используем ту же функцию, но последний параметр указываем пустым.
Добавление подстрок к полю
Существую случаи когда в начало или конец поля требуется что-то добавить. Например, новое предложение. В этих случая в SQL используют функцию объединения строк — «Concat».
Эту же задачу можно решить и спомощью «Replace». При этом появляется возможность добавлять подстроку в начало поля.
В примере к каждому полю таблицы в начало добавляется подстрока «START!», а в конец — « THE END!».
Приведённые SQL запросы можно выполнять как на PHP, так и через скрипты администрирования, вроде «phpMyAdmin».