การต่อสตริง (Concatenate) คอลัมน์หลายคอลัมน์ให้เป็นคอลัมน์เดียว
ใช้ CONCAT() รวมค่าจากหลายคอลัมน์ เป็นสตริงเดียวในผลลัพธ์ SELECT
สร้างตารางและข้อมูล
mysql> create table DemoTable1396 (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(40),
-> Age int
-> );
Query OK, 0 rows affected (0.93 sec)
mysql> insert into DemoTable1396(Name, Age) values('Chris', 21);
mysql> insert into DemoTable1396(Name, Age) values('David', 24);
mysql> insert into DemoTable1396(Name, Age) values('Bob', 26);
ข้อมูลต้นฉบับ
+----+-------+------+ | Id | Name | Age | +----+-------+------+ | 1 | Chris | 21 | | 2 | David | 24 | | 3 | Bob | 26 | +----+-------+------+
คำสั่ง CONCAT รวมคอลัมน์
mysql> select Id, Name, Age, concat(Id, Name, Age) as AllColumns
-> from DemoTable1396;
ผลลัพธ์
+----+-------+------+------------+ | Id | Name | Age | AllColumns | +----+-------+------+------------+ | 1 | Chris | 21 | 1Chris21 | | 2 | David | 24 | 2David24 | | 3 | Bob | 26 | 3Bob26 | +----+-------+------+------------+
เพิ่ม Separator ให้อ่านง่าย
SELECT Id, Name, Age,
CONCAT(Id, ' | ', Name, ' | ', Age) AS AllColumns
FROM DemoTable1396;
ผลลัพธ์: 1 | Chris | 21
ฟังก์ชัน CONCAT_WS (With Separator)
CONCAT_WS(' | ', Id, Name, Age)
ข้าม NULL อัตโนมัติ (CONCAT ธรรมดาจะคืน NULL หากมีค่า NULL ใดๆ)
การจัดการ NULL
SELECT CONCAT(Id, Name, Age) -- NULL หาก Age เป็น NULL
SELECT CONCAT(Id, Name, COALESCE(Age, '')) -- จัดการ NULL เอง
SELECT CONCAT_WS(' ', Id, Name, Age) -- ข้าม NULL เอง (แนะนำ)
กรณีใช้งานจริง
- สร้าง display name:
CONCAT(first_name, ' ', last_name) - สร้าง slug/URL:
CONCAT(LOWER(REPLACE(title, ' ', '-')), '-', id) - Export CSV:
CONCAT_WS(',', col1, col2, col3) - Log/Audit:
CONCAT('User ', user_id, ' updated ', table_name)