web-dev-qa-db-ja.com

SQL UPDATEのstr_replace?

以下にサンプルテーブルを示します。

name       |   picture

John S.    |   http://servera.Host.com/johns.png
Linda B.   |   http://servera.Host.com/lindab.png
...

さらに数百のレコードがあるとしましょう。

また、サーバーを「servera」から「serverb」に移動したとしましょう。

1つのクエリを使用してこのテーブルに移動し、すべてのレコードの「picture」列のコンテンツの名前を変更して、正しいサーバー名を読み取ることは可能ですか?

43
Julian H. Lam

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%'
101
Anatoly G
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テーブルを作成し、ユーザーに画像ファイル名を保存することも考えられますが、それはあなたが尋ねた質問ではありません;-)

18
Andrew