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

Tìm chuỗi bắt đầu bằng số dùng MySQL Regex?

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ĩaVí 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

  • REGEXP khô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