Cập nhật giá trị cột, thay thế một phần của chuỗi


325

Tôi có một bảng với các cột sau trong cơ sở dữ liệu MySQL

[id, url]

Và các url giống như:

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

Tôi muốn cập nhật tất cả các url sang tên miền khác

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

giữ nguyên tên của tập tin

Tôi phải chạy truy vấn gì?


Bản sao có thể có của chuỗi thay thế MySQL
Steve Chambers

Câu trả lời:


680
UPDATE urls
SET url = REPLACE(url, 'domain1.com/images/', 'domain2.com/otherfolder/')

162
UPDATE yourtable
SET url = REPLACE(url, 'http://domain1.com/images/', 'http://domain2.com/otherfolder/')
WHERE url LIKE ('http://domain1.com/images/%');

các tài liệu có liên quan: http://dev.mysql.com/doc/refman/5.5/en/opes-fifts.html#feft_Vplace


13
Xin chào- tại sao tôi cần ở đâu?
Guy Cohen

14
@GuyCohen Bởi vì nếu không, truy vấn sẽ sửa đổi từng hàng trong bảng. Các WHEREkhoản tối ưu hóa truy vấn để chỉ sửa đổi các hàng với URL nhất định. Về mặt logic, kết quả sẽ giống nhau, nhưng việc bổ sung WHEREsẽ giúp thao tác nhanh hơn.
Dmytro Shevchenko

3
Điều này WHEREcũng đảm bảo rằng bạn chỉ thay thế các phần của chuỗi bắt đầu bằng http://etc/etc/hoặc string_to_be_replaced.Ví dụ, trong câu trả lời đã cho, http://domain1.com/images/this/is/a/testsẽ bị ảnh hưởng, nhưng foobar/http://domain1.com/images/sẽ không.
Kyle Challis


9

Bạn cần mệnh đề WHERE để thay thế CHỈ các bản ghi tuân thủ điều kiện trong mệnh đề WHERE (trái ngược với tất cả các bản ghi). Bạn sử dụng dấu % để chỉ chuỗi một phần: IE

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

có nghĩa là tất cả các bản ghi mà BEGIN"...//domain1.com/images/"và có bất cứ điều gì SAU (đó là %cho ...)

Một vi dụ khac:

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

có nghĩa là tất cả các hồ sơ có chứa "http://domain1.com/images/"

trong bất kỳ phần nào của chuỗi ...


7

Thử cái này...

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

1

Đầu tiên, phải kiểm tra

CHỌN * TỪ universityWHERE Course_name THÍCH '% & amp%'

Tiếp theo, phải cập nhật

CẬP NHẬT trường đại học SET Course_name = REPLACE (Course_name, '& amp', '&') WHERE id = 1

Kết quả: Kỹ thuật & Công nghệ amp => Kỹ thuật & Công nghệ

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.