Str_replace в SQL UPDATE?
Здесь пример таблицы:
name | picture
John S. | http://servera.host.com/johns.png
Linda B. | http://servera.host.com/lindab.png
...
Скажем, есть еще несколько сотен записей.
Предположим также, что мы переместили серверы с "servera" на "serverb".
Можно ли войти в эту таблицу с одним запросом, чтобы переименовать содержимое в столбце "изображение" для каждой записи, чтобы прочитать правильное имя сервера?
Ответы
Ответ 1
T-SQL:
update TBL
set picture = Replace(picture, 'servera', 'serverb')
where picture like '%servera%'
Oracle:
update TBL
set picture = Replace(picture, 'servera', 'serverb')
where picture like '%servera%'
MySQL:
update TBL
set picture = Replace(picture, 'servera', 'serverb')
where picture like '%servera%'
Ответ 2
UPDATE users
SET picture = REPLACE(picture, 'http://servera.host.com/', 'http://serverb.host.com/')
WHERE picture LIKE 'http://servera.host.com/%';
Я включаю больше строки, потому что я буду беспокоиться о "исправлении" изображения с именем "somethingserverasomething.jpg". Я мог бы также подумать о наличии таблицы base_url и просто хранить имена файлов изображений у пользователей, но это не вопрос, который вы задали; -)