Dùng UPDATE ... SET cot = REPLACE(cot, 'chuoi_can_xoa', '') để xóa một chuỗi con cố định khỏi cột TEXT/VARCHAR.
Ví dụ minh họa
Tạo bảng lưu XML-like string:
CREATE TABLE DemoTable1583 (GameDetails TEXT);
INSERT INTO DemoTable1583 VALUES
('=Candy ,2000 '),
('=Lucky29 ,10000 ');
Xóa phần :
UPDATE DemoTable1583 SET GameDetails = REPLACE(GameDetails, '=Candy ', '');
Kết quả
| GameDetails (trước) | GameDetails (sau) |
|---|---|
| <GameName>=Candy</GameName>,<GamePrice>2000</GamePrice> | ,<GamePrice>2000</GamePrice> |
| <GameName>=Lucky29</GameName>,<GamePrice>10000</GamePrice> | <GameName>=Lucky29</GameName>,<GamePrice>10000</GamePrice> |
Lưu ý quan trọng
REPLACEthay thế tất cả lần xuất hiện trong chuỗi.- Phân biệt chữ hoa/thường tuỳ collation (mặc định case-insensitive).
- Kết quả có thể còn dấu phân cách thừa (ví dụ: dấu phẩy đầu dòng) — cần xử lý thêm.
Cải tiến: Xóa cả dấu phẩy thừa
UPDATE DemoTable1583 SET GameDetails = TRIM(BOTH ',' FROM REPLACE(GameDetails, '=Candy ,', ''));
MySQL 8.0+: REGEXP_REPLACE (mạnh hơn)
UPDATE DemoTable1583 SET GameDetails = REGEXP_REPLACE(GameDetails, '=Candy ,?', '');
Hỗ trợ regex pattern, tùy chọn thay thế.
⚠️ Cảnh báo thiết kế
Lưu trữ XML/JSON/CSV trong cột TEXT khiến query/update phức tạp, kém hiệu năng. Khuyến nghị:
- MySQL 5.7+: Cột
JSONvới hàmJSON_REMOVE(),JSON_SET(). - MySQL 8.0+:
JSON_TABLE,->>operator. - Chuẩn hóa: tách thành bảng liên kết (Game, Price).