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

Thay thế backslash-doublequote (\") trong cột VARCHAR MySQL


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).