สำหรับ MySQL เคยเป็นบ้างไหมครับ ที่เรามีค่าที่ผิดพลาดอยู่ในพวก text หรือ varchar แต่เราแค่อยากเปลี่ยนเฉพาะคำนั้น ไม่ได้ต้องการเปลี่ยนทั้ง text อย่างเช่น
table: t_data field: data_value(text) abcdefg http://kanexkane.com hijklmnopqrstuvwxyz
ซึ่งในกรณีนี้เคนต้องการเปลี่ยนจาก http://kanexkane.com เป็น https://www.yongyee.com เท่านั้นเอง แต่อยากให้คงตัวข้อมูลด้านหน้า และด้านหลังเอาไว้
ให้เราใช้โค้ดชุดนี้ครับ
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
โดยที่เปลี่ยน
- table_name เป็นชื่อ table ของเรา
- field เป็นชื่อฟิลด์ของเรา
- ‘foo’ เป็นคำที่เราต้องการจะเปลี่ยน
- ‘bar’ คือคำใหม่ที่เราต้องการเอาเข้าไปแทนใน ‘foo’
ดังนั้นจะเปลี่ยนโค้ดที่เคนต้องการได้มาเป็นแบบนี้ครับ
UPDATE t_data SET data_value = REPLACE( data_value, 'http://kanexkane.com', 'https://www.yongyee.com' ) WHERE INSTR( data_value, 'http://kanexkane.com' ) > 0;
ขอขอบคุณ Joe Skora จาก StackOverflow
ถ้าใช้เป็นรูปแบบตัวแปร
ก็จะเป็นประมาณนี้นะ ก็จะง่ายไปอีกแบบ
SET @from = 'http://kanexkane.com'; SET @to = 'https://www.yongyee.com'; UPDATE table_name SET field_name = REPLACE( field_name, @from, @to ) WHERE INSTR( field_name, @from ) > 0;