Обновить значение столбца, заменив часть строки


326

У меня есть таблица со следующими столбцами в базе данных MySQL

[id, url]

И URL-адреса, как:

 http://domain1.com/images/img1.jpg

Я хочу обновить все URL в другой домен

 http://domain2.com/otherfolder/img1.jpg

сохраняя имя файла как есть.

Какой запрос я должен выполнить?


Возможный дубликат замены строки MySQL
Стив Чамберс

Ответы:



162
UPDATE yourtable
SET url = REPLACE(url, 'http://domain1.com/images/', 'http://domain2.com/otherfolder/')
WHERE url LIKE ('http://domain1.com/images/%');

соответствующие документы: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace


13
Привет, зачем мне где?
Гай Коэн,

14
@GuyCohen Потому что иначе запрос будет изменять каждую строку в таблице. Предложение WHEREоптимизирует запрос, чтобы изменить только строки с определенным URL. По логике, результат будет таким же, но добавление WHEREсделает операцию быстрее.
Дмитрий Шевченко

3
Он WHEREтакже гарантирует, что вы заменяете только те части строк, которые начинаются с http://etc/etc/или, string_to_be_replaced.например, в данном ответе http://domain1.com/images/this/is/a/testбудут затронуты, но foobar/http://domain1.com/images/не будут затронуты .
Кайл Чаллис


9

Вы нуждаетесь в WHERE условии , чтобы заменить ТОЛЬКО запись , которая соответствует условию в WHERE пункте (в отличие от всех записей). Вы используете знак % для обозначения частичной строки: IE

LIKE ('...//domain1.com/images/%');

означает все записи , которые НАЧАТЬ с "...//domain1.com/images/"и иметь что - либо после того, как (это %для ...)

Другой пример:

LIKE ('%http://domain1.com/images/%')

что означает все записи, которые содержат "http://domain1.com/images/"

в любой части строки ...



1

Сначала нужно проверить

ВЫБЕРИТЕ * ОТ universityГДЕ название курса НРАВИТСЯ '% & amp%'

Далее нужно обновить

ОБНОВЛЕНИЕ университета SET Course_name = REPLACE (название_курса, '& amp', '&') WHERE id = 1

Результаты: Инженерные и усилительные технологии => Инженерные и технологические

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.