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

Xóa phần dữ liệu trong cột TEXT/MySQL với REPLACE()

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 =Candy:

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

  • REPLACE thay 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 JSON với hàm JSON_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).