Để lọc các chuỗi kết thúc bằng chữ số (0-9), sử dụng toán tử REGEXP với mẫu [[:digit:]]$.
Cú pháp
SELECT * FROM ten_bang WHERE ten_cot REGEXP '[[:digit:]]$';
Ví dụ minh họa
Tạo bảng:
mysql> CREATE TABLE StringEndsWithNumber (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserId VARCHAR(20),
-> UserName VARCHAR(20)
-> );
Chèn dữ liệu (mix kết thúc bằng chữ/số):
mysql> INSERT INTO StringEndsWithNumber(UserId, UserName) VALUES('123User', 'John');
mysql> INSERT INTO StringEndsWithNumber(UserId, UserName) VALUES('User456', 'Larry');
mysql> INSERT INTO StringEndsWithNumber(UserId, UserName) VALUES('User789', 'John');
mysql> INSERT INTO StringEndsWithNumber(UserId, UserName) VALUES('0981User', 'Carol');
mysql> INSERT INTO StringEndsWithNumber(UserId, UserName) VALUES('User999', 'Bob');
mysql> INSERT INTO StringEndsWithNumber(UserId, UserName) VALUES('User1290', 'David');
mysql> INSERT INTO StringEndsWithNumber(UserId, UserName) VALUES('User456', 'James');
Dữ liệu gốc:
+----+----------+----------+ | Id | UserId | UserName | +----+----------+----------+ | 1 | 123User | John | | 2 | User456 | Larry | | 3 | User789 | John | | 4 | 0981User | Carol | | 5 | User999 | Bob | | 6 | User1290 | David | | 7 | User456 | James | +----+----------+----------+
Lọc chuỗi kết thúc bằng số:
mysql> SELECT * FROM StringEndsWithNumber WHERE UserId REGEXP '[[:digit:]]$';
Kết quả (5/7 hàng):
+----+----------+----------+ | Id | UserId | UserName | +----+----------+----------+ | 2 | User456 | Larry | | 3 | User789 | John | | 5 | User999 | Bob | | 6 | User1290 | David | | 7 | User456 | James | +----+----------+----------+
Giải thích REGEXP
[[:digit:]]: Lớp ký tự số (tương đương[0-9])$: Neo cuối chuỗi (end of string)REGEXP: Toán tử so khớp regex (case-insensitive mặc định)
Các mẫu REGEXP hữu ích khác
| Mẫu | Ý nghĩa |
|---|---|
^[[:digit:]] | Bắt đầu bằng số |
[[:alpha:]]$ | Kết thúc bằng chữ cái |
^[[:alpha:]]+$ | Chỉ chứa chữ cái |
[[:alnum:]] | Chữ hoặc số |