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

Lấy bản ghi cột bắt đầu bằng 2 nguyên âm trong MySQL

Yêu cầu

Truy vấn các dòng mà giá trị cột bắt đầu bằng 2 ký tự nguyên âm (a, e, i, o, u - không phân biệt hoa/thường).

Giải pháp: REGEXP / RLIKE

Tạo bảng và dữ liệu:

CREATE TABLE DemoTable664 (CityName VARCHAR(100));
INSERT INTO DemoTable664 VALUES
('Springfield'), ('Austin'), ('Franklin'), ('OAKLAND'), ('Anchorage');

Truy vấn:

SELECT * FROM DemoTable664
WHERE CityName RLIKE '^[aeiouAEIOU][aeiouAEIOU]';

Kết quả:

+----------+
| CityName |
+----------+
| Austin   |
| OAKLAND  |
+----------+

Giải thích Regex

  • ^: Bắt đầu chuỗi.
  • [aeiouAEIOU]: Một ký tự nguyên âm (hoa hoặc thường).
  • [aeiouAEIOU]: Ký tự thứ 2 cũng là nguyên âm.
  • Không có $ nên không quan tâm phần còn lại.

Cách viết gọn hơn (case-insensitive)

Nếu collation case-insensitive (mặc định):

WHERE CityName RLIKE '^[aeiou]{2}'

Hoặc dùng LOWER():

WHERE LOWER(CityName) RLIKE '^[aeiou]{2}'

Hiệu năng

  • RLIKE/REGEXP không sử dụng index thông thường (full scan).
  • Có thể tạo GENERATED COLUMN lưu 2 ký tự đầu + index lên cột đó (MySQL 5.7+).
  • Với dữ liệu lớn, cân nhắc Full-Text Search hoặc xử lý ở application layer.

Mở rộng: N nguyên âm đầu tiên

-- 3 nguyên âm đầu
WHERE CityName RLIKE '^[aeiouAEIOU]{3}'

-- Tối thiểu 2 nguyên âm đầu
WHERE CityName RLIKE '^[aeiouAEIOU]{2,}'