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 и просто хранить имена файлов изображений у пользователей, но это не вопрос, который вы задали; -)