Vấn đề
Cột Title chứa chuỗi như '\\"MySQL', 'MongoDB\\"', '\\"Java\\"'. Cần thay '\\"' (backslash + double quote) thành '"' (chỉ double quote).
Giải pháp: UPDATE + REPLACE
UPDATE DemoTable SET Title = REPLACE(Title, '\\"', '"');
Ví dụ minh họa
Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (Title VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES
('\\"MySQL'), ('MongoDB\\"'), ('\\"Java\\"'), ('\\"C"');
Xem dữ liệu trước (backslash hiển thị là escape)
mysql> SELECT * FROM DemoTable;
+-----------+ | Title | +-----------+ | \"MySQL | | MongoDB\" | | \"Java\" | | \"C | +-----------+
Cập nhật
mysql> UPDATE DemoTable SET Title = REPLACE(Title, '\\"', '"');
Query OK, 4 rows affected (0.14 sec)
Kết quả sau
mysql> SELECT * FROM DemoTable;
+----------+ | Title | +----------+ | "MySQL | | MongoDB" | | "Java" | | "C" | +----------+
Giải thích escape trong MySQL string literal
- Trong SQL string literal:
'\\"'đại diện cho 2 ký tự: backslash \ + double quote ". - MySQL dùng backslash làm escape trong string literal.
REPLACE(Title, '\\"', '"'): Tìm chuỗi 2 ký tự \ + " → thay bằng ".
Lưu ý
- Nếu dữ liệu nhập từ ứng dụng, backslash có thể đã bị escape kép. Cần kiểm tra dữ liệu thực bằng
SELECT HEX(Title). HEX('\\"')= 5C22 (5C=backslash, 22=double quote).- MySQL 8.0:
REGEXP_REPLACE(Title, '\\\\"', '"')(regex escape phức tạp hơn).