สำหรับ 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;
0 0 votes
Article Rating
0
Would love your thoughts, please comment.x
()
x