Giới thiệu
Dùng REPLACE(col, '\\', '----') để thay thế ký tự backslash \ bằng chuỗi khác (ví dụ '----') trong cột lưu đường dẫn file.
Ví dụ thực hành
1. Tạo bảng DemoTable827
mysql> CREATE TABLE DemoTable827 (Path TEXT);
2. Chèn đường dẫn có backslash
mysql> INSERT INTO DemoTable827 VALUES ('C\\MySQL'),('D\\NewFolder\\'),('E:\\myFolder\\MyDocument');
Lưu ý: Trong SQL string literal, backslash cần escape: 'C\\\\MySQL' hoặc dùng 'C\\MySQL' nếu NO_BACKSLASH_ESCAPES mode. Ví dụ bài viết dùng 'C\\MySQL'.
3. Thay \ bằng ----
mysql> UPDATE DemoTable827 SET Path = REPLACE(Path, '\\', '----');
4. Kết quả
+------------------------------+
| Path |
+------------------------------+
| C----MySQL |
| D----NewFolder---- |
| E:----myFolder----MyDocument |
+------------------------------+
Giải thích escape backslash
- Trong chuỗi SQL:
'\\\\'đại diện cho 1 ký tự backslash thực tế (vì \ là escape trong string literal). - Trong
REPLACE(Path, '\\\\', '----'): đối số thứ 2 là chuỗi 1 ký tự \. - Nếu bật
NO_BACKSLASH_ESCAPESSQL mode: dùng'\\'trực tiếp.
Ứng dụng thực tế
- Chuẩn hóa đường dẫn Windows (\\) sang Unix (/):
REPLACE(Path, '\\\\', '/'). - Làm sạch dữ liệu nhập từ CSV, log file.
- Lưu ý: Backslash trong JSON, regex, LIKE cũng cần escape phù hợp.
Lưu ý
REPLACEthay thế tất cả lần xuất hiện.- Cột
TEXThỗ trợ độ dài lớn, phù hợp đường dẫn. - Test trên tập nhỏ trước khi chạy toàn bảng.