บทนำ
การรวมข้อความจากหลายคอลัมน์เข้าด้วยกันพร้อมตัวคั่น (เช่น เว้นวรรค) ใช้ฟังก์ชัน CONCAT() ได้ทั้งใน SELECT และ UPDATE
ตัวอย่างการสร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(20),
-> Subject VARCHAR(100)
-> );
Query OK, 0 rows affected (17.73 sec)
mysql> INSERT INTO DemoTable(Name, Subject) VALUES('John', 'MySQL');
mysql> INSERT INTO DemoTable(Name, Subject) VALUES('Chris', 'SQL Server');
mysql> INSERT INTO DemoTable(Name, Subject) VALUES('Robert', 'MongoDB');
แสดงข้อมูลก่อนอัปเดต
mysql> SELECT * FROM DemoTable;
ผลลัพธ์
+----+--------+------------+
| Id | Name | Subject |
+----+--------+------------+
| 1 | John | MySQL |
| 2 | Chris | SQL Server |
| 3 | Robert | MongoDB |
+----+--------+------------+
3 rows in set (0.00 sec)
คำสั่งอัปเดต: รวม Name + เว้นวรรค + Subject เข้าไปใน Subject
mysql> UPDATE DemoTable
-> SET Subject = CONCAT(Name, ' ', Subject);
ตรวจสอบผลลัพธ์
mysql> SELECT * FROM DemoTable;
ผลลัพธ์
+----+--------+------------------+
| Id | Name | Subject |
+----+--------+------------------+
| 1 | John | John MySQL |
| 2 | Chris | Chris SQL Server |
| 3 | Robert | Robert MongoDB |
+----+--------+------------------+
3 rows in set (0.00 sec)
รูปแบบ CONCAT แบบต่างๆ
-- CONCAT ธรรมดา (ไม่มีตัวคั่น)
CONCAT('Hello', 'World') -- 'HelloWorld'
-- CONCAT พร้อมตัวคั่น
CONCAT('Hello', ' ', 'World') -- 'Hello World'
-- CONCAT_WS (With Separator) - ใส่ตัวคั่นอัตโนมัติ ข้าม NULL
CONCAT_WS(' ', 'Hello', NULL, 'World') -- 'Hello World'
-- ใช้ใน SELECT
SELECT CONCAT(FirstName, ' ', LastName) AS FullName FROM Users;
ข้อควรระวัง
- UPDATE นี้จะเปลี่ยนข้อมูลถาวร ควร Backup หรือทดสอบด้วย SELECT ก่อน
- หากคอลัมน์มี NULL, CONCAT จะคืน NULL (ใช้ CONCAT_WS หรือ COALESCE ป้องกันได้)