อัพเดตค่าคอลัมน์แทนที่ส่วนหนึ่งของสตริง


325

ฉันมีตารางที่มีคอลัมน์ต่อไปนี้ในฐานข้อมูล MySQL

[id, url]

และ URL เป็นเช่น:

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

ฉันต้องการอัปเดต URL ทั้งหมดไปยังโดเมนอื่น

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

การรักษาชื่อของไฟล์ตามที่เป็นอยู่

ฉันต้องเรียกใช้แบบสอบถามอะไร


สำเนาซ้ำที่เป็นไปได้ของสตริง MySQL
Steve Chambers

คำตอบ:



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
สวัสดีฉันจะต้องอยู่ที่ไหนทำไม
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/testจะได้รับผลกระทบ แต่foobar/http://domain1.com/images/จะไม่
Kyle Challis


9

คุณต้องการส่วนคำสั่ง WHEREเพื่อแทนที่เฉพาะระเบียนที่สอดคล้องกับเงื่อนไขในส่วนคำสั่ง WHERE (ตรงข้ามกับระเบียนทั้งหมด) คุณใช้เครื่องหมาย%เพื่อระบุสตริงบางส่วน: IE

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

หมายถึงระเบียนทั้งหมดที่เริ่มต้นด้วย"...//domain1.com/images/"และมีอะไรหลังจากนั้น ( %สำหรับ ... )

ตัวอย่างอื่น:

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

ซึ่งหมายถึงระเบียนทั้งหมดที่มี "http://domain1.com/images/"

ในส่วนใด ๆ ของสตริง ...



1

ก่อนอื่นต้องตรวจสอบ

เลือก * จากที่ใดuniversitycourse_name เช่น '% & amp%'

ถัดไปต้องอัปเดต

อัปเดตมหาวิทยาลัย SET course_name = แทนที่ (course_name, '& amp', '&') WHERE id = 1

ผลลัพธ์:วิศวกรรมและเทคโนโลยีแอมป์ => วิศวกรรมและเทคโนโลยี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.