Dấu nháy đơn (') trong dữ liệu văn bản thường gây lỗi cú pháp SQL khi chèn/cập nhật nếu không escape đúng. Hàm REPLACE() giúp loại bỏ hoặc thay thế chúng hàng loạt trong bảng.
Tạo bảng và chèn dữ liệu có apostrophe
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Sentence VARCHAR(100)
);
mysql> INSERT INTO DemoTable (Sentence) VALUES
('Chris\'s Father'), ('Larry\'s Mother');
Lưu ý: Trong SQL, apostrophe trong chuỗi literal phải escape bằng backslash \' hoặc gấp đôi ''.
Dữ liệu ban đầu
mysql> SELECT * FROM DemoTable;
+----+----------------+
| Id | Sentence |
+----+----------------+
| 1 | Chris's Father |
| 2 | Larry's Mother |
+----+----------------+
Cập nhật: Xóa bỏ apostrophe (thay bằng chuỗi rỗng)
mysql> UPDATE DemoTable
SET Sentence = REPLACE(Sentence, '\'', '');
Query OK, 2 rows affected (0.07 sec)
Rows matched: 2 Changed: 2 Warnings: 0
Kết quả sau khi thay thế
mysql> SELECT * FROM DemoTable;
+----+---------------+
| Id | Sentence |
+----+---------------+
| 1 | Chriss Father |
| 2 | Larrys Mother |
+----+---------------+
Cú pháp REPLACE
REPLACE(column_name, 'chuỗi_cần_tìm', 'chuỗi_thay_thế')
Các trường hợp dùng khác
- Thay thế apostrophe bằng ký tự khác:
REPLACE(Sentence, '\'', '’')(dấu nháy đơn cong typographic). - Chuẩn hóa dữ liệu nhập từ người dùng (loại bỏ ký tự không mong muốn).
- Kết hợp với
TRIM(),REPLACE()lồng nhau để dọn dẹp chuỗi phức tạp.
Phòng tránh tốt hơn: Luôn dùng Prepared Statements (Parameterized Queries) trong ứng dụng (PDO, MySQLi, ORM) để tránh SQL Injection và lỗi escape thủ công.