2009-06-27 18 views
4

私はいくつかのユーザーに関するデータを含むテーブルを持っています。MYSQLの一括更新

多くの人はOLDHOST.comの社内メールシステムを使用しています。 NEWHOST.comで新しいシステムに更新しました。すべてのユーザーのユーザー名が同じであるため、[email protected]の場合は[email protected]になります。

すべての行を選択せず​​にusersテーブルのすべての電子メールフィールドを変更する方が良いですか例えばPHPで、電子メールがOLDHOSTを持っているかどうかを確認し、その文字列をNEWHOSTに置き換えますか?

これに役立つすばらしいSQL文が焼き付けられていますか?


など、テーブルの一部(簡体字)

id | firstname | surname | email 
------------------------------------------------ 
1 | dave  | smith | [email protected] 
2 | barry  | jones | [email protected] 

の例

変更する必要があるすべてはNEWHOSTにOLDHOST(すべてません)を含むすべてのメールです。

答えて

7

更新文内の各文字列の関連部分を置換し、@の後ろのホスト名部分文字列を置換えして置き換える必要があります。

UPDATE table SET email=REPLACE(email,'OLDHOST.com', 'newhost.com'); 

注:REPLACE()を使用すると、すべてのケースの可能性をキャッチする必要がある場合は、以下のように、REPLACE関数内LOWER(email)を使用できるようには、大文字と小文字が区別される:これはまた、意志

UPDATE table SET email=REPLACE(LOWER(email),'oldhost.com', 'newhost.com'); 

をすべてのあなたの電子メールアドレスを小文字に変換してください:

+0

いいえ、ごめんなさい - 電子メールアドレスは文字列として電子メールという列に格納されています。 –

+0

私はあなたの質問の一部を間違っているだろう:)修正するために編集 –

+0

ああ - それは素敵に見えます! –