Тема: Создать запрос на выборку и замену данных в таблице.

Здравствуйте. Помогите пожалуйста создать запрос.
В определенной таблице, в определенной колонке найти все содержащее *** (к примеру)
и заменить на ###

искать и заменять не только отдельно стоящие *** но и ***тратата, тратата***

Re: Создать запрос на выборку и замену данных в таблице.

Извиняюсь за невнимательность, ответ нашел тут
http://forum.php-myadmin.ru/viewtopic.php?id=825

Re: Создать запрос на выборку и замену данных в таблице.

Еще не все)) задача усложняется.

ТАБЛИЦА_1 состоит из двух столбцов
Составляю запрос:

UPDATE `ТАБЛИЦА_1` SET `КОЛОНКА_2` = REPLACE( `КОЛОНКА_2` , '111', '222' )

Все работает, но... Мне нужно чтобы каждое найденое в колонке 2 111 заменялось не 222, а 222(плюс) соответствующее строке значение КОЛОНКИ_1

Re: Создать запрос на выборку и замену данных в таблице.

хелп, никак не могу справиться с задачей neutral

5

Re: Создать запрос на выборку и замену данных в таблице.

аллекс33

UPDATE `ТАБЛИЦА_1` SET `КОЛОНКА_2` = REPLACE( `КОЛОНКА_2` , '111', '222' + `КОЛОНКА_1`);

Re: Создать запрос на выборку и замену данных в таблице.

выполнил
в итоге все найденные значения заменяются одним нулем sad

7 (изменено: аллекс33, 2009-03-13 16:24:36)

Re: Создать запрос на выборку и замену данных в таблице.

уточняю задачу

вот `ТАБЛИЦА_1`

http://s39.radikal.ru/i084/0903/6d/314cb4b11670.jpg

в колонке privmsgs_text нужно найти все 111
и заменить их на 222 плюс значение колонки privmsgs_bbcode_uid в этойже строке
т.е. все 111 должны замениться на 222fdd5847a7d (для этого примера)

Запрос составлял так:

UPDATE `ТАБЛИЦА_1` SET `privmsgs_text` = REPLACE( `privmsgs_text` , '111', '222' + `privmsgs_bbcode_uid` )

но в итоге все найденые [size=16]111[/size] заменились на [size=16]0[/size]

Re: Создать запрос на выборку и замену данных в таблице.

запрос вида

UPDATE `ТАБЛИЦА_1` SET `privmsgs_text` = REPLACE( `privmsgs_text` , '111', `privmsgs_bbcode_uid` )

работает
приходется составлять два отдельных запроса?

9

Re: Создать запрос на выборку и замену данных в таблице.

аллекс33
Для строк используется конкатенация (объединение строк), а не сложение.

UPDATE `ТАБЛИЦА_1` SET `privmsgs_text` = REPLACE( `privmsgs_text` , '111',  CONCAT('222', `privmsgs_bbcode_uid`));

10 (изменено: аллекс33, 2009-03-14 02:59:08)

Re: Создать запрос на выборку и замену данных в таблице.

Hanut, огромное вам человеческое спасибо!!! Запрос по вашей подсказке отработал без запинки!
Менял на форуме старые смайлы. Решил их все удалить, а в старых постах заменить содержащийся в них код смайлов прямыми ссылками.
например
все найденые [size=16]:-)[/size] заменить на

[img]http://мойсайт/images/32-1.gif[/img]

проблема была в том что форум хранит это иначе

[img:a1ee28b4c6]http://мойсайт/images/32-1.gif[/img:a1ee28b4c6]

где a1ee28b4c6 добавлялось из соседней колонки privmsgs_bbcode_uid

Составил такой запрос и все сработало:

UPDATE `ol_mar_bbprivmsgs_text` SET `privmsgs_text` = REPLACE( `privmsgs_text` , ':-)', 
CONCAT( '[img:', `privmsgs_bbcode_uid` , ']http://мойсайт/images/32-1.gif[/img:', `privmsgs_bbcode_uid` , ']' ) )

Еще раз спасибо.

11

Re: Создать запрос на выборку и замену данных в таблице.

О! Спасибо огромное. Сам запарился кошмар как. Так то всё делал правильно. Но в конце запроса прописывал