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

MySQL รวมคอลัมน์พร้อมข้อความแยก (CONCAT) แสดงในคอลัมน์เดียว

ใช้ฟังก์ชัน CONCAT() เพื่อรวมค่าจากหลายคอลัมน์และข้อความคงที่ (Literal String) ให้กลายเป็นคอลัมน์เดียว

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

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

mysql> CREATE TABLE DemoTable (
    Id INT,
    Name VARCHAR(20)
);
Query OK, 0 rows affected (0.93 sec)

2. เพิ่มข้อมูลทดสอบ

mysql> INSERT INTO DemoTable VALUES(101, 'Chris');
Query OK, 1 row affected (0.25 sec)
mysql> INSERT INTO DemoTable VALUES(102, 'David');
Query OK, 1 row affected (0.23 sec)
mysql> INSERT INTO DemoTable VALUES(103, 'Robert');
Query OK, 1 row affected (0.16 sec)

3. แสดงข้อมูลเดิม

mysql> SELECT * FROM DemoTable;
+------+--------+
| Id   | Name   |
+------+--------+
|  101 | Chris  |
|  102 | David  |
|  103 | Robert |
+------+--------+

4. ใช้ CONCAT() รวมคอลัมน์พร้อมข้อความ

mysql> SELECT CONCAT('The student id and name is= ', Id, ',', Name, ' .') FROM DemoTable;

5. ผลลัพธ์

+---------------------------------------------------------------+
| CONCAT('The student id and name is= ', Id, ',', Name, ' .')   |
+---------------------------------------------------------------+
| The student id and name is= 101,Chris .                       |
| The student id and name is= 102,David .                       |
| The student id and name is= 103,Robert .                      |
+---------------------------------------------------------------+

ฟังก์ชัน CONCAT() และ CONCAT_WS()

ฟังก์ชันคำอธิบายตัวอย่าง
CONCAT(str1, str2, ...)รวมสตริงโดยตรง ถ้ามีค่า NULL จะได้ NULLCONCAT('A', 'B') = 'AB'
CONCAT_WS(sep, str1, str2, ...)รวมสตริงด้วย Separator (ข้ามค่า NULL)CONCAT_WS(',', 'A', NULL, 'B') = 'A,B'

เคล็ดลับ: จัดการค่า NULL

-- ใช้ IFNULL หรือ COALESCE ป้องกันผลลัพธ์เป็น NULL
SELECT CONCAT('Name: ', IFNULL(Name, 'N/A')) FROM DemoTable;

-- หรือใช้ CONCAT_WS
SELECT CONCAT_WS(' ', 'Name:', Name) FROM DemoTable;

สรุป

CONCAT() เหมาะสำหรับสร้างข้อความแสดงผล (Display String) รวมคอลัมน์และข้อความคงที่ ต้องระวังค่า NULL ที่จะทำให้ผลลัพธ์เป็น NULL ทั้งหมด ควรใช้ IFNULL() หรือ CONCAT_WS() ช่วยจัดการ