Масова заміна тексту в mysql, sqr`s blog

UPDATE `table` SET` column` = REPLACE (column, 'search', 'replace');

У цьому коді замінюємо table на назву таблиці, column на назву колонки, search - шуканий текст, replace - текст, на котрих будемо заміщати.
Так само в запит можна додати будь-яка умова WHERE.

І повний синтаксис команди REPLACE

REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name.)] VALUES (expression.), (.). або REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name.)] SELECT. або REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name SET col_name = expression, col_name = expression.

Оператор REPLACE працює точно так само, як INSERT, за винятком того, що якщо стара запис в цій таблиці має те ж значення індексу UNIQUE або PRIMARY KEY, що і нова, то стара запис перед занесенням нової буде видалена.

Іншими словами, команда REPLACE не дає доступ до замещаемой записи. У деяких старих версіях MySQL такий доступ іноді опинявся можливим, але це був дефект, який вже виправлений.

Для використання REPLACE у вас повинні бути привілеї INSERT і DELETE для таблиці.

При використанні команди REPLACE функція mysql_affected_rows () поверне значення, рівне 2, якщо стара рядок була замінена новою. Пояснюється це тим, що в таблицю вставляється рядок після того, як віддаляється дублікат.

Це дозволяє легко визначати, яку дію справила команда REPLACE - додавання або заміщення рядка. Досить просто перевірити, яке число повернула функція mysql_affected_rows () - 1 (рядок додана) або 2 (заміщена).

Слід враховувати, що, якщо не використовуються індекси UNIQUE або PRIMARY KEY, то застосування команди REPLACE не має сенсу, так як вона працює просто як INSERT.

13 Thoughts on "Масова заміна тексту в MySQL"

to Женя
У SQL не сильний, але там по-моєму одельная команди для видалення таблиць і рядків. Для таблиць на кшталт drop table, для окремих записів delete from ім'я таблиці, далі чтопісать вже не пам'ятаю. У той же час, ніхто не заважає використовувати озвучені в цій статті методи, просто ніж замінювати залишити порожнім, поиде, має буде саме видалити потрібні записи в базі, але це в теорії, на практиці не перевіряв, тільки заміну тексту спробував, допомогло.

About Contango

Схожі статті