Lọc phiên bản phần mềm (dạng x.y.z) với REGEXP trong MySQL
Sử dụng biểu thức chính quy để chỉ giữ các bản ghi đúng định dạng số.dấu chấm.số...
Tạo bảng và dữ liệu
mysql> create table DemoTable ( Version varchar(20) );
mysql> insert into DemoTable values('1.0.0');
mysql> insert into DemoTable values('2.s6.9');
mysql> insert into DemoTable values('1.5.0');
Truy vấn REGEXP
mysql> select * from DemoTable
-> where Version regexp '^[0-9]+\\.[0-9]+(\\.[0-9]+)*$';
Kết quả
+---------+ | Version | +---------+ | 1.0.0 | | 1.5.0 | +---------+
Giải thích REGEXP:
^: Bắt đầu chuỗi[0-9]+: Một hoặc nhiều chữ số (major version)\\.: Dấu chấm thực tế (escape)[0-9]+: Minor version(\\.[0-9]+)*: Nhóm (dấu chấm + số) lặp lại 0 hoặc nhiều lần (patch, build...)$: Kết thúc chuỗi
Kết quả: '1.0.0' và '1.5.0' khớp. '2.s6.9' bị loại vì có chữ 's' giữa các dấu chấm.
Mở rộng: Chỉ cho phép 3 phần (major.minor.patch): '^[0-9]+\\.[0-9]+\\.[0-9]+$'.