Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธี UPDATE คอลัมน์โดยต่อข้อมูลเพิ่มเข้าไปใน MySQL

การใช้ CONCAT() และ IFNULL() ใน UPDATE

เพื่อต่อข้อมูลเพิ่มเข้าไปในคอลัมน์เดิม ใช้ CONCAT() ร่วมกับ IFNULL() เพื่อจัดการค่า NULL

รูปแบบคำสั่ง

UPDATE your_table_name 
SET your_column = CONCAT(IFNULL(your_column, ''), 'string_to_append');

ตัวอย่างการใช้งานจริง

1. สร้างตาราง

CREATE TABLE AppendDataDemo (
    StudentId INT,
    StudentName VARCHAR(100),
    StudentAge INT
);

2. เพิ่มข้อมูล (มีค่า NULL อยู่ 1 แถว)

INSERT INTO AppendDataDemo VALUES 
(101, 'John', 23),
(102, NULL, 24),
(103, 'Mike', 26);

3. ตรวจสอบข้อมูลก่อนอัปเดต

SELECT * FROM AppendDataDemo;
StudentIdStudentNameStudentAge
101John23
102NULL24
103Mike26

4. อัปเดตต่อข้อมูล ' Carol,Sam,Maria'

UPDATE AppendDataDemo 
SET StudentName = CONCAT(IFNULL(StudentName, ''), ' Carol,Sam,Maria');

ผลลัพธ์หลังอัปเดต

StudentIdStudentNameStudentAge
101John Carol,Sam,Maria23
102Carol,Sam,Maria24
103Mike Carol,Sam,Maria26

ฟังก์ชันที่ใช้

ฟังก์ชันหน้าที่
CONCAT(str1, str2, ...)ต่อสตริง (คืน NULL ถ้ามีอาร์กิวเมนต์ NULL)
IFNULL(expr, alt)คืน expr ถ้าไม่ NULL, ไม่เช่นนั้นคืน alt
COALESCE(expr1, expr2, ...)คืนค่าแรกที่ไม่ NULL (มาตรฐาน SQL)
CONCAT_WS(sep, str1, str2, ...)ต่อสตริงด้วย Separator (ข้าม NULL อัตโนมัติ)

วิธีที่ดีกว่า: ใช้ CONCAT_WS

UPDATE AppendDataDemo 
SET StudentName = CONCAT_WS(', ', StudentName, 'Carol', 'Sam', 'Maria');
  • ✅ จัดการ NULL เอง (ข้าม NULL)
  • ✅ ใส่ Separator อัตโนมัติ (', ')
  • ✅ โค้ดสะอาดกว่า

ข้อควรระวัง

  • ⚠️ WHERE Clause: อย่าลืม WHERE ถ้าไม่ได้ต้องการอัปเดตทุกแถว
  • 📏 Max Length: VARCHAR/TEXT มีขีดจำกัด (65KB/4GB)
  • 🔄 Transaction: ใช้ Transaction หากสำคัญ
  • 💾 Backup: สำรองข้อมูลก่อน Update จำนวนมาก