Как найти и заменить текст в MySQL таблице используя синтаксис SQL


alexu аватар

alexu - Posted on 04 Март 2009

Найти и заменить текст в MySQL посредством SQL запроса можно достаточно просто, используя команду REPLACE:

UPDATE ИМЯ_ТАБЛИЦЫ SET ИМЯ_ПОЛЯ = REPLACE(ИМЯ_ПОЛЯ, ‘строка для замены’, ‘чем заменяем’);

Пример: заменяем слово 'interim' на 'projectdeliverable' в поле data таблицы webform:

UPDATE webform SET DATA =REPLACE(DATA, 'interim', 'projectdeliverable');

Если в ответ на данное действие вы получаете ошибку в виде

ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

это означает, что у вас включена опция "безопасных модификаций", ограничивающих вид запросов на изменения базы. В данном случае необходимо указать условие запроса WHERE, в котором будет присутствовать индексное поле таблицы. В нашем случае имеется поле nid, которое является ключевым и которое в нашем случае всегда больше нуля. Его-то и используем в модифицируемой версии запроса:

UPDATE webform SET DATA =REPLACE(DATA, 'interim', 'projectdeliverable') WHERE nid > 0;

Вот и все :)

0
Ваша оценка: Ничего

Добрый день!
А как написать запрос к базе, чтобы заменить все ссылки http на https?

А я голову ломал!!!

Давно искал такую инфу

То что надо!!

Очень выручила статейка. Спасибо

Спасибо!!! То что нужно. Я уже хотел регулярками на пхп ковырять.

Все я сам уже нашел:
Вот кому интересно:

ALTER TABLE `table_name` CHANGE `nazvanie_stolbca1` `nazvanie_stolbca2` text;

народ а как поменять не содержимое таблицы а само название таблицы?
что то типа того надо, только как правильно это сделать?
UPDATE ИМЯ_ТАБЛИЦЫ SET ИМЯ_ПОЛЯ1 = REPLACE ИМЯ_ПОЛЯ2);

...Спасибо. А как найти учсток текста в графе и заменить его на др, но при этом указать id строк с такой-то по такую-то?

sktehnikum.com.ua
vlasovgolf.ru
iamasponsor.net
supersite.org.ua

Спасибо за напоминание, уже подзабыл

очень помогла статься спасибо

Очень помог совет спасибо

Скажите, пожалуйста, можно при замене текста в базе данных использовать регулярные выражения? если да, то как?

Нельзя.
Но например для mysql легко гуглится по запросу "replace regexp mysql".
Вот некоторые решения:
http://techras.wordpress.com/2011/06/02/regex-replace-for-mysql/
http://www.mysqludf.org/lib_mysqludf_preg/
https://launchpad.net/mysql-udf-regexp

где в бд найти таблицу jos_users?

a kak zdelati esli esti sleduishee pole v'kotoryi nahoditsa danye etovo tipa: Maxim#Andrei#Dasha
vsio v'odnom i ia hochiu raziedeniti eti danye v'3 polea otdelino: Maxim Andrei Dasha.
ktoto znaet?

Можно попробовать что-нибудь вроде такого:

UPDATE таблица 
       SET поле1 = SUBSTRING_INDEX(поле_с_данными, '#', 1)
       SET поле2 = SUBSTRING_INDEX(SUBSTRING_INDEX(поле_с_данными, '#', 2), '#', -1) 
       SET поле3 = SUBSTRING_INDEX(поле_с_данными, '#', -1)

А как быть если в ответ кракозябли выдает?
То есть хочу русский текст заменить, а в ответ "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near"

Интересная статья. Спасибо автору

Спасибки! Доходчиво и наглядно.
Поставил закладочку.

Огромное спасибо за статью, очень помогла в экстренной ситуации, теперь буду знать что где искать по этой теме

Боты такие боты.

насчет программистов которые делают апдейты без условия, это как про сисадминов и бекапы:

есть те, которые делали апдейты без условия, и те которые которым это еще предстоит.

where nib>0 в вашем случае конечно спасает, и то что есть индекс - уменьшит шуршание диском на проверку этого условия.
но обычно в условиях которые должны всегда выполняться иногда делают where 1=1, а которые никогда не должны выполняться - where 1=0. [ некоторые программисты (в code_wtf) пишут такие условия в if-ы, и где 1=1 идет код, а 1=0 - комментарии. ]

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.