Как в phpmyadmin найти совпадение текста в одной колонке и заменить значение в другой?

Основной вопрос в заголовке. Какой SQL запрос подать для решения такой задачи?
Есть таблица dle_post, в ней две нужные колонки xfields и date. Нужно найти текст в колонке xfields и если он совпадает, изменить значение в колонке date.
(поиск и замена во всей таблице)

Такое вообще возможно реализовать запросами?
  • Вопрос задан
  • 504 просмотра
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега MySQL
Такое вообще возможно реализовать запросами?

Легко :)
Если предположить, что параметр "year" не может быть первым в наборе параметров и его длина всегда равна 4, то так:

UPDATE  
	`dle_post`
SET
	`date` = CONCAT(
		LEFT(SUBSTR(`xfields`, LOCATE('||year|', `xfields`)+7), 4),
		RIGHT(`date`, 15)
	)
WHERE 
	LOCATE('||year|', `xfields`) > 0


Уточненные требования:
дату не нужно вычислять, а просто указать свою - для всех новостей у которых стоит год 1997.
Совпадение текста с поиском, не правильно выразился.
Если он находит такой год (значение, в данном примере 1997) в колонке xfields то меняем на произвольную дату (указанную вручную) в колонке date

Решение:
UPDATE  
  `dle_post`
SET
  `date` = CONCAT(
    '2014-03-24', # подставьте тут нужную дату
    RIGHT(`date`, 9)
  )
WHERE xfields LIKE '%year|1997%' # подставьте тут желаемый год
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы