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

190

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

[id, url]

И URL-адреса похожи на:

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

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

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

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

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

Теги:

4 ответа

386
Лучший ответ
UPDATE urls
SET url = REPLACE(url, 'domain1.com/images/', 'domain2.com/otherfolder/')
  • 2
    Очень полезно, работает на 2000 запросов без сбоев, очень быстро.
  • 4
    REPLACE также работает на SELECT, довольно полезно :)
97
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

  • 0
    +1 за ссылку на документацию ...
  • 13
    Привет там - зачем мне где?
Показать ещё 2 комментария
20

Попробуйте использовать функцию REPLACE:

mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
        -> 'WwWwWw.mysql.com'

Обратите внимание, что он чувствителен к регистру.

  • 1
    + для указания чувствительности к регистру.
  • 0
    Как вы делаете СЛУЧАЙНО - НЕДОСТАТОЧНО? Я стека плз HLP. Спасибо
Показать ещё 1 комментарий
8

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

LIKE ('...//domain1.com/images/%'); означает все записи, которые BEGIN с помощью "...//domain1.com/images/" и имеют что-либо ПОСЛЕ (что% for...)

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

LIKE ('% http://domain1.com/images/%'), что означает все записи, содержащие " http://domain1.com/images/" в любой части строки...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню