การ update แทนค่าคำบางคำ ด้วย คำสั่ง Update SQL ( Mysql )
คำสั่ง Query ของ MySQL นั้นเป็นคำสั่งที่ช่วยในการกรองข้อมูลและการจัดการที่เกี่ยวข้องกับข้อมูล เพื่อให้ได้ข้อมูลตามความต้องการจากตารางในระบบฐานข้อมูลออกมาในรูปแบบที่จะมาใช้ประโยชน์ต่อ ไม่ว่าจะเป็นการนำข้อมูลเพื่อมาวิเคราะห์ข้อมูลทางด้านสถิติ, ความน่าจะเป็น, การพิจารณา, นำมาตัดสินใจ หรือจะเป็นด้านการจัดการข้อมูลที่มีปริมาณมากอาทิเช่น การINSERT (เพิ่มข้อมูล), DELETE (ลบข้อมูล), UPDATE (อัพเดตข้อมูล) แก้ไขเปลี่ยนแปลงข้อมูลที่เราต้องการปรับเปลี่ยนได้ โดยที่ไม่ต้องแก้ไขข้อมูลที่ละเรกคอร์ด ซึ่งหากเราใช้ Query ก็จะสามารถจัดการข้อมูลได้หลายเรกคอร์ดตามเงื่อนไขที่เราต้องใส่ลงไปได้อีกด้วย ซึ่งในบทความนี้จะมาแนะนำการจัดการข้อความที่เราต้องการจะแทนที่คำหรือข้อความด้วยคำสั่ง REPLACE
คำสั่ง REPLACE นั้นเป็นคำสั่งที่ใช้สำหรับการแทนที่ข้อความหนึ่งเป็นอีกข้อความหนึ่งตามที่เราต้องการที่จะเปลี่ยนแปลงหรือแก้ไข ซึ่งหากมีข้อมูลหลายๆ เรกคอร์ดโดยถ้าเราจะต้องเข้าไปแก้ที่ละเรกคอร์ดก็คงไม่ดีแน่ อาจจะทำให้เสียเวลาและเกิดข้อผิดพลาดของโปรแกรมหรือข้อมูลที่มาจากการแก้ข้อมูลด้วยตัวเอง ซึ่งใน SQL จะมีคำสั่ง REPLACE เข้ามาช่วยในการจัดการกับจำนวนข้อมูลที่ต้องการแก้ไขในการแทนที่ได้หลายๆ เรกคอร์ด ซึ่งจะใช้ควบคู่กับคำสั่ง Update ในการแก้ไขข้อมูลใน Table ให้อีกด้วย
สมมติในฐานข้อมูลเรามีข้อมูลใน Table ที่ชื่อ customer ที่มีข้อมูลใน Field ชื่อ name ซึ่งเราต้องการเปลี่ยนข้อความจาก "xxx" เป็น "yyy"
การใช้คำสั่ง REPLACE
UPDATE customer
SET `name` = REPLACE(`name`,"xxx","yyy")
คำสั่ง REPLACE จะใช้คู่กับคำสั่ง UPDATE ที่มีหน้าที่ในการอัพเดตข้อมูลตามเงื่อนไขที่เรากำหนดเอาไว้ โดยรูปแบบการใช้งานมีดังนี้
UPDATE Table Name เป็นคำสั่งในการอัพเดตข้อมูล ที่จะต้องทำการระบุชื่อ Table ที่ต้องการเปลี่ยนแปลง
SET เป็นการระบุชื่อ field ที่ต้องเปลี่ยนนั้น สามารถระบุ Field ที่ต้องการแก้ไขได้มากกว่า 1 Field ด้วยการคั้นใช้เครื่องหมายคอมม่า (,) เช่น SET name = 'John', surname = 'Partner'
REPLACE จะมีรูปแบบการใช้งานเป็น REPLACE('Field Name', 'คำที่ค้นหา','คำแทนที่')
ผลลัพท์เมื่อเราใช้คำสั่ง REPLACE ก็จะทำการเปลี่ยนจาก "xxx" เป็น "yyy" ซึ่งเราก็จะเห็นว่ามีการแทนที่คำที่เป็น "xxx" ทั้งหมดที่เจอในทุกเรกคอร์ด ซึ่งเมื่อเจอคำว่า "xxx" แล้วจะเปลี่ยนเป็น "yyy" แทนที่ทันที
หากต้องการแก้ไขข้อมูลเฉพาะบางอย่าง ก็สามารถใส่กำหนดเงื่อนไขเพิ่มเติมด้วยการใช้คำสั่ง WHERE ต่อท้าย SET ได้เช่น ต้องการแทนที่ "xxx" เป็น "yyy" ในช่อง Field ที่ชื่อ name แค่เฉพาะที่ id เท่ากับ 3
UPDATE customer
SET `name` = REPLACE(`name`,"xxx","yyy")
WHERE id = 3
ผลลัพท์ที่เมื่อกำหนด WHERE ให้เปลี่ยน "xxx" เป็น "yyy" เฉพาะ id ที่เท่ากับ 3 ก็จะเห็นได้ว่าข้อความเดิมใน id ที่เป็น 3 นั้นที่เคยเป็น "minxxx" ได้ถูกเปลี่ยนเป็น "minyyy" ด้วยคำสั่ง REPLACE ที่เราได้กำหนดว่าเปลี่ยนเฉพาะที่ id เท่ากับ 3 เท่านั้น
การใช้คำสั่งของภาษา SQL เหมาะสมในการจัดการเปลี่ยนแปลงข้อมูลที่มีปริมาณหลายเรกคอร์ท ซึ่งเราไม่ต้องเสียเวลาเข้าไปแก้ไขข้อมูลที่ละเรกคอร์ด และสามารถลดข้อผิดพลาดจากการแก้ไขข้อมูลด้วยตัวเองได้มากขึ้น ในบทความนี้เราจะได้เห็นจากผลลัพท์ข้างต้นที่ใช้คำสั่ง REPLACE ในการแทนที่คำหรือข้อความตามที่เราต้องการเปลี่ยนนั้น คงเป็นประโยชน์ไม่น้อยสำหรับผู้ใช้งานที่ต้องการเปลี่ยนแปลงแก้ไขคำหรือข้อความที่มีปริมาณเรกคอร์ดที่มีหลายเรกคอร์ด ซึ่งการใช้งานนั้นก็ไม่ยากอย่างที่คิด อีกทั้งเรายังสามารถกำหนดเงื่อนไข ( คำสั่ง WHERE) ที่ต้องเปลี่ยนแปลงได้
อ้างอิง
- บทที่ 1 รู้จักกับ SQL, [ออนไลน์], เข้าถึง https://www.mindphp.com/%E0%B8%9A%E0%B8%97%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B8%AD%E0%B8%AD%E0%B8%99%E0%B9%84%E0%B8%A5%E0%B8%99%E0%B9%8C/%E0%B8%AA%E0%B8%AD%E0%B8%99-sql/3672-%E0%B8%9A%E0%B8%97%E0%B8%97%E0%B8%B5%E0%B9%881-%E0%B8%A3%E0%B8%B9%E0%B9%89%E0%B8%88%E0%B8%B1%E0%B8%81%E0%B8%81%E0%B8%B1%E0%B8%9A-sql.html
- SQL Server REPLACE() Function, [ออนไลน์], เข้าถึง https://www.w3schools.com/sql/func_sqlserver_replace.asp
- SQL เบื้องต้น (Insert Select Update Delete Join) เพิ่ม ลบ แก้ไข ข้อมูล, [ออนไลน์], เข้าถึง https://www.mindphp.com/forums/viewtopic.php?f=72&t=51874