文字列の一部を置き換えて列値を更新する


325

MySQLデータベースに次の列を持つテーブルがあります

[id, url]

そしてURLは次のようなものです:

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

すべてのURLを別のドメインに更新したい

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

ファイルの名前をそのまま保持します。

実行する必要があるクエリは何ですか?


回答:



162
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


13
こんにちは、なぜwhereが必要なのですか?
Guy Cohen

14
@GuyCohenそれ以外の場合、クエリはテーブルのすべての行を変更するためです。このWHERE句はクエリを最適化して、特定のURLの行のみを変更します。論理的には、結果は同じですが、を追加WHEREすると操作が高速になります。
Dmytro Shevchenko

3
また、またはWHERE始まる文字列の一部のみを置き換えることも保証されます。たとえば、指定された回答では、影響はありますが影響はありません。http://etc/etc/string_to_be_replaced.http://domain1.com/images/this/is/a/testfoobar/http://domain1.com/images/
カイルチャリス


9

(すべてのレコードではなく)WHERE句の条件に準拠するレコードのみを置き換えるには、WHERE句が必要です。記号を使用して部分的な文字列を示します:IE

LIKE ('...//domain1.com/images/%');

始まり"...//domain1.com/images/"その後に何かがあるすべてのレコードを意味します(それは%for ...)

もう一つの例:

LIKE ('%http://domain1.com/images/%')

これは、 "http://domain1.com/images/"

文字列のどの部分にも...


7

これを試して...

update [table_name] set [field_name] = 
replace([field_name],'[string_to_find]','[string_to_replace]');

1

まず、チェックする必要があります

SELECT * FROM universityWHEREコース名LIKE '%&amp%'

次に、更新する必要があります

UPDATE大学SETコース名= REPLACE(コース名、 '&amp'、 '&')WHERE id = 1

結果:エンジニアリングとアンプテクノロジー=> エンジニアリングとテクノロジー

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.