Để lọc các hàng có chứa ít nhất một chữ cái in hoa (A-Z), dùng RLIKE (tương đương REGEXP) kết hợp ép kiểu BINARY để phân biệt hoa/thường.
Ví dụ minh họa
Tạo bảng và chèn dữ liệu:
CREATE TABLE contains_capital_letterDemo (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(100)
);
INSERT INTO contains_capital_letterDemo (Name) VALUES ('Larry');
INSERT INTO contains_capital_letterDemo (Name) VALUES ('larry');
INSERT INTO contains_capital_letterDemo (Name) VALUES ('john');
INSERT INTO contains_capital_letterDemo (Name) VALUES ('JOHN');
INSERT INTO contains_capital_letterDemo (Name) VALUES ('mike');
INSERT INTO contains_capital_letterDemo (Name) VALUES ('Mike');
Dữ liệu:
+----+-------+ | Id | Name | +----+-------+ | 1 | Larry | | 2 | larry | | 3 | john | | 4 | JOHN | | 5 | mike | | 6 | Mike | +----+-------+
Truy vấn lọc có chữ hoa:
SELECT * FROM contains_capital_letterDemo WHERE CAST(Name AS BINARY) RLIKE '[A-Z]';
Kết quả (3 hàng có chữ hoa):
+----+-------+ | Id | Name | +----+-------+ | 1 | Larry | | 4 | JOHN | | 6 | Mike | +----+-------+
Giải thích:
CAST(Name AS BINARY)ép chuỗi sang binary collation, khiến so sánh phân biệt chữ hoa/thường (case-sensitive).RLIKE '[A-Z]'khớp nếu có ít nhất một ký tự từ A đến Z.- Nếu không dùng
BINARY, MySQL mặc định case-insensitive, cả 'larry' và 'Larry' đều khớp '[A-Z]' vì collation mặc định coi a = A.
Thay thế: Có thể dùng COLLATE utf8mb4_bin thay cho CAST(... AS BINARY).