Sử dụng toán tử REGEXP với pattern '^[0-9]' để tìm chuỗi bắt đầu bằng chữ số.
Tạo bảng
mysql> CREATE TABLE DemoTable (Id VARCHAR(200));
Chèn dữ liệu mẫu
mysql> INSERT INTO DemoTable VALUES('123User');
mysql> INSERT INTO DemoTable VALUES('_$123User');
mysql> INSERT INTO DemoTable VALUES('User123456');
mysql> INSERT INTO DemoTable VALUES('0000User');
mysql> INSERT INTO DemoTable VALUES('&^*User');
Xem dữ liệu
mysql> SELECT * FROM DemoTable;
+------------+ | Id | +------------+ | 123User | | _$123User | | User123456 | | 0000User | | &^*User | +------------+
Tìm chuỗi bắt đầu bằng số (0-9)
mysql> SELECT DISTINCT Id FROM DemoTable WHERE Id REGEXP '^[0-9]';
+----------+ | Id | +----------+ | 123User | | 0000User | +----------+
Giải thích Regex
^: Neo đầu chuỗi (start of string)[0-9]: Bất kỳ chữ số nào từ 0-9^[0-9]: Chuỗi bắt đầu bằng một chữ số
Các pattern hữu ích khác
| Pattern | Ý nghĩa | Ví dụ khớp |
|---|---|---|
^[0-9]+ | Bắt đầu bằng 1+ chữ số | '123abc', '0test' |
^[A-Za-z] | Bắt đầu bằng chữ cái | 'User1', 'abc' |
^[^0-9] | KHÔNG bắt đầu bằng số | 'User1', '_test' |
[0-9]$ | Kết thúc bằng số | 'user1', 'test9' |
^[0-9]{3} | Bắt đầu bằng đúng 3 số | '123abc', '000xyz' |
Lưu ý hiệu năng
REGEXPkhông sử dụng index thông thường (full table scan)- MySQL 8.0+ hỗ trợ
REGEXP_LIKE()và index cho regex đơn giản - Với bảng lớn, cân nhắc cột computed
starts_with_digit BOOLEAN AS (Id REGEXP '^[0-9]') STORED+ index