Để kiểm tra xem một cột varchar có chứa dấu phần trăm (%) hay không trong MySQL, bạn có thể sử dụng toán tử LIKE kết hợp với mệnh đề ESCAPE.
Cú pháp
SELECT * FROM ten_bang WHERE ten_cot LIKE '%|%%' ESCAPE '|';
Trong đó:
|là ký tự escape (ký tự thoát) - bạn có thể chọn ký tự khác không xuất hiện trong dữ liệu%|%%tìm kiếm chuỗi chứa dấu%thực tế (ký tự%đầu và cuối là wildcard,|%đại diện cho dấu % thực)
Ví dụ minh họa
1. Tạo bảng kiểm thử
CREATE TABLE FindPercentInVarcharDemo (
Id INT NOT NULL AUTO_INCREMENT,
Words VARCHAR(30),
PRIMARY KEY(Id)
);
2. Chèn dữ liệu mẫu
INSERT INTO FindPercentInVarcharDemo(Words) VALUES('This is a My%SQL Program');
INSERT INTO FindPercentInVarcharDemo(Words) VALUES('Java is an object oriented');
INSERT INTO FindPercentInVarcharDemo(Words) VALUES('C# is also an object%oriented');
3. Xem toàn bộ dữ liệu
SELECT * FROM FindPercentInVarcharDemo;
Kết quả:
+----+-------------------------------+
| Id | Words |
+----+-------------------------------+
| 1 | This is a My%SQL Program |
| 2 | Java is an object oriented |
| 4 | C# is also an object%oriented |
+----+-------------------------------+
4. Truy vấn tìm các hàng chứa dấu %
SELECT * FROM FindPercentInVarcharDemo
WHERE Words LIKE '%|%%' ESCAPE '|';
Kết quả:
+----+-------------------------------+
| Id | Words |
+----+-------------------------------+
| 1 | This is a My%SQL Program |
| 4 | C# is also an object%oriented |
+----+-------------------------------+
Giải thích chi tiết
Khi sử dụng LIKE, dấu % là ký tự đại diện (wildcard) khớp với bất kỳ chuỗi nào. Do đó, để tìm dấu % thực tế, ta cần "escape" nó. Cú pháp ESCAPE '|' khai báo ký tự | làm ký tự thoát, sau đó dùng |% để biểu diễn dấu phần trăm thực.
Lưu ý: Ký tự escape có thể là bất kỳ ký tự nào không xuất hiện trong dữ liệu (ví dụ: \, #, @, v.v.).