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

Truy vấn MySQL hiển thị các trường chứa chữ in hoa

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