Cú pháp
Sử dụng hàm CONCAT() trong câu lệnh UPDATE:
UPDATE ten_bang SET ten_cot = CONCAT(ten_cot, 'gia_tri_them') WHERE dieu_kien;
Ví dụ: Thêm họ "Taylor" vào cột FirstName
1. Tạo bảng
mysql> CREATE TABLE AppendingDataDemo ( -> FirstNameAndLastName VARCHAR(200) -> ); Query OK, 0 rows affected (0.59 sec)
2. Chèn dữ liệu
mysql> INSERT INTO AppendingDataDemo VALUES('John');
Query OK, 1 row affected (0.27 sec)
mysql> INSERT INTO AppendingDataDemo VALUES('Bob');
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO AppendingDataDemo VALUES('Carol');
Query OK, 1 row affected (0.30 sec)
3. Dữ liệu ban đầu
mysql> SELECT * FROM AppendingDataDemo;
+----------------------+ | FirstNameAndLastName | +----------------------+ | John | | Bob | | Carol | +----------------------+ 3 rows in set (0.00 sec)
4. Nối thêm " Taylor"
mysql> UPDATE AppendingDataDemo -> SET FirstNameAndLastName = CONCAT(FirstNameAndLastName, ' Taylor'); Query OK, 3 rows affected (0.10 sec) Rows matched: 3 Changed: 3 Warnings: 0
5. Kết quả
mysql> SELECT * FROM AppendingDataDemo;
+----------------------+ | FirstNameAndLastName | +----------------------+ | John Taylor | | Bob Taylor | | Carol Taylor | +----------------------+ 3 rows in set (0.00 sec)
Các biến thể hữu ích
Nối với dấu phân cách
UPDATE ten_bang SET ten_cot = CONCAT(ten_cot, ', ', gia_tri_moi);
Nối nhiều cột
UPDATE ten_bang SET ten_cot = CONCAT(cot_a, ' - ', cot_b, ' - ', cot_c);
Nối có điều kiện (chỉ khi chưa có)
UPDATE ten_bang SET ten_cot = CONCAT(ten_cot, ' Taylor') WHERE ten_cot NOT LIKE '%Taylor%';
Sử dụng CONCAT_WS (With Separator) - tự bỏ qua NULL
UPDATE ten_bang
SET ten_cot = CONCAT_WS(', ', ten_cot, gia_tri_moi);
Lưu ý quan trọng
⚠️ CONCAT trả về NULL nếu bất kỳ tham số nào là NULL!
SELECT CONCAT('abc', NULL, 'def'); -- Kết quả: NULL
Giải pháp: Dùng CONCAT_WS() hoặc COALESCE():
SELECT CONCAT_WS('', 'abc', NULL, 'def'); -- 'abcdef'
SELECT CONCAT(COALESCE(cot, ''), 'them'); -- An toàn
Hàm liên quan
| Hàm | Mô tả | Xử lý NULL |
|---|---|---|
| CONCAT(str1, str2, ...) | Nối chuỗi | Trả về NULL nếu có NULL |
| CONCAT_WS(sep, str1, str2, ...) | Nối với dấu phân cách | Bỏ qua NULL |
| GROUP_CONCAT() | Nối nhiều hàng thành 1 chuỗi | Bỏ qua NULL |