Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách nối thêm dữ liệu vào cột MySQL đã có giá trị (CONCAT)


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àmMô tảXử lý NULL
CONCAT(str1, str2, ...)Nối chuỗiTrả về NULL nếu có NULL
CONCAT_WS(sep, str1, str2, ...)Nối với dấu phân cáchBỏ qua NULL
GROUP_CONCAT()Nối nhiều hàng thành 1 chuỗiBỏ qua NULL