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

MySQL LIKE không hoạt động với chuỗi chứa dấu chấm để lọc bản ghi bắt đầu bằng số

Sử dụng REGEXP thay vì LIKE cho chuỗi chứa dấu chấm

Khi dữ liệu chứa dấu chấm (ví dụ: phiên bản '19.6'), LIKE có thể không hoạt động chính xác do ký tự đặc biệt. Giải pháp: dùng REGEXP.

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

mysql> create table DemoTable ( 
    GameReleaseVersion varchar(20) 
); 
Query OK, 0 rows affected (0.57 sec)
mysql> insert into DemoTable values('19.6'); 
mysql> insert into DemoTable values('18.4'); 
mysql> insert into DemoTable values('17.6'); 
mysql> insert into DemoTable values('19.5');

Truy vấn REGEXP lấy phiên bản bắt đầu bằng 19

mysql> select * from DemoTable 
    -> where GameReleaseVersion regexp '^19\\.[0-9]+$';

Kết quả

+--------------------+ 
| GameReleaseVersion | 
+--------------------+ 
| 19.6               | 
| 19.5               | 
+--------------------+ 
2 rows in set (0.15 sec)

Giải thích REGEXP:

  • ^19: Bắt đầu bằng '19'
  • \\.: Dấu chấm thực sự (cần escape)
  • [0-9]+: Một hoặc nhiều chữ số
  • $: Kết thúc chuỗi

Tại sao không dùng LIKE? LIKE '19.%' cũng hoạt động trong trường hợp này, nhưng REGEXP mạnh hơn cho các mẫu phức tạp (ví dụ: '19.[5-9]' chỉ lấy 19.5 đến 19.9).