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

Tìm chữ in hoa trong chuỗi MySQL với REGEXP BINARY

Sử dụng REGEXP BINARY để tìm kiếm phân biệt chữ hoa/chữ thường (case-sensitive) các ký tự in hoa trong chuỗi.

Cú pháp

SELECT * FROM tên_bảng WHERE tên_cột REGEXP BINARY '[A-Z]{2}';

[A-Z]{2} khớp với ít nhất 2 chữ in hoa liên tiếp.

Ví dụ minh họa

Tạo bảng demo:

mysql> CREATE TABLE FindCapitalLettersDemo (
    -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentFirstName VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.52 sec)

Chèn dữ liệu (có chữ hoa, chữ thường, viết hoa toàn bộ):

mysql> INSERT INTO FindCapitalLettersDemo(StudentFirstName) VALUES
    -> ('JOHN'), ('Carol'), ('bob'), ('carol'), ('John');

Xem dữ liệu:

mysql> SELECT * FROM FindCapitalLettersDemo;
+-----------+------------------+
| StudentId | StudentFirstName |
+-----------+------------------+
| 1         | JOHN             |
| 2         | Carol            |
| 3         | bob              |
| 4         | carol            |
| 5         | John             |
+-----------+------------------+

Tìm tên có ít nhất 2 chữ in hoa liên tiếp:

mysql> SELECT * FROM FindCapitalLettersDemo 
    -> WHERE StudentFirstName REGEXP BINARY '[A-Z]{2}';
+-----------+------------------+
| StudentId | StudentFirstName |
+-----------+------------------+
| 1         | JOHN             |
+-----------+------------------+

Giải thích

  • JOHN: có "JO", "OH", "HN" → khớp
  • Carol: chỉ 'C' in hoa, 'arol' thường → không khớp
  • John: chỉ 'J' in hoa → không khớp
  • bob, carol: toàn chữ thường → không khớp

Các pattern REGEXP hữu ích khác

PatternÝ nghĩaVí dụ khớp
[A-Z]Ít nhất 1 chữ in hoaJohn, JOHN, aBc
^[A-Z]Bắt đầu bằng chữ in hoaJohn, Carol
[A-Z]$Kết thúc bằng chữ in hoajohnA
[A-Z]{3,}Tối thiểu 3 chữ in hoa liên tiếpABC, HELLO
[A-Z][a-z]+Chữ in hoa + chữ thường (Title Case)John, Carol
BINARYPhân biệt hoa/thường (mặc định MySQL không phân biệt)

Lưu ý hiệu năng

REGEXP không sử dụng index → full table scan. Với bảng lớn, cân nhắc:

  • Tạo cột computed lưu phiên bản chuẩn hóa
  • Dùng FULLTEXT search nếu cần phức tạp
  • Xử lý ở tầng ứng dụng