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

รวม 2 คอลัมน์ใน MySQL และอัปเดตคอลัมน์ที่ 3 ด้วย CONCAT

สามารถรวมค่าจาก 2 คอลัมน์แล้วเก็บไว้ในคอลัมน์ที่ 3 ได้โดยใช้คำสั่ง ALTER TABLE เพิ่มคอลัมน์ใหม่ ตามด้วย UPDATE ร่วมกับฟังก์ชัน CONCAT()

Syntax

ALTER TABLE yourTableName ADD COLUMN yourColumnName dataType;
UPDATE yourTableName SET yourAddedColumnName = CONCAT(yourColumnName1, ' ', yourColumnName2);

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

1. สร้างตารางและเพิ่มข้อมูล

mysql> create table DemoTable1590 ( FirstName varchar(20), LastName varchar(20) ); Query OK, 0 rows affected (0.57 sec)

mysql> insert into DemoTable1590 values('Adam','Smith'); Query OK, 1 row affected (0.45 sec)
mysql> insert into DemoTable1590 values('John','Doe'); Query OK, 1 row affected (0.42 sec)
mysql> insert into DemoTable1590 values('David','Miller'); Query OK, 1 row affected (0.16 sec)

ข้อมูลต้นฉบับ:

mysql> select * from DemoTable1590;
+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| Adam      | Smith    |
| John      | Doe      |
| David     | Miller   |
+-----------+----------+
3 rows in set (0.00 sec)

2. เพิ่มคอลัมน์ FullName และอัปเดตข้อมูล

mysql> alter table DemoTable1590 add column FullName varchar(40); Query OK, 0 rows affected (0.54 sec)
mysql> update DemoTable1590 set FullName = concat(FirstName, ' ', LastName); Query OK, 3 rows affected (0.56 sec)

3. ตรวจสอบผลลัพธ์

mysql> select * from DemoTable1590;
+-----------+----------+--------------+
| FirstName | LastName | FullName     |
+-----------+----------+--------------+
| Adam      | Smith    | Adam Smith   |
| John      | Doe      | John Doe     |
| David     | Miller   | David Miller |
+-----------+----------+--------------+
3 rows in set (0.00 sec)

เทคนิคเพิ่มเติม

ใช้ CONCAT_WS() สำหรับจัดการ NULL อัตโนมัติ

หากคอลัมน์ใดคอลัมน์หนึ่งเป็น NULL, CONCAT() จะคืนค่า NULL ทั้งหมด แต่ CONCAT_WS() (Concatenate With Separator) จะข้าม NULL ไป:

UPDATE DemoTable1590 SET FullName = CONCAT_WS(' ', FirstName, LastName);

เพิ่มคอลัมน์พร้อมค่าเริ่มต้น (Generated Column) - MySQL 5.7+

ALTER TABLE DemoTable1590 ADD COLUMN FullName VARCHAR(40) GENERATED ALWAYS AS (CONCAT(FirstName, ' ', LastName)) STORED;

สรุป: ใช้ ALTER TABLE ... ADD COLUMN สร้างคอลัมน์ใหม่ แล้ว UPDATE ... SET ... = CONCAT() เพื่อรวมค่า สำหรับข้อมูลที่อาจมี NULL แนะนำให้ใช้ CONCAT_WS() แทน