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

Làm thế nào để SELECT trong MySQL nơi giá trị cuối cùng của chuỗi = x?

Sử dụng toán tử LIKE với ký tự đại diện % để tìm chuỗi kết thúc bằng một giá trị cụ thể.

Tạo bảng ID khách hàng

mysql> CREATE TABLE DemoTable (ClientId VARCHAR(20));

Chèn dữ liệu

mysql> INSERT INTO DemoTable VALUES('CLI-101');
mysql> INSERT INTO DemoTable VALUES('CLI-110');
mysql> INSERT INTO DemoTable VALUES('CLI-201');
mysql> INSERT INTO DemoTable VALUES('CLI-210');
mysql> INSERT INTO DemoTable VALUES('CLI-502');
mysql> INSERT INTO DemoTable VALUES('CLI-1010');
mysql> INSERT INTO DemoTable VALUES('CLI-1012');

Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+----------+
| ClientId |
+----------+
| CLI-101  |
| CLI-110  |
| CLI-201  |
| CLI-210  |
| CLI-502  |
| CLI-1010 |
| CLI-1012 |
+----------+

Tìm ID kết thúc bằng '10' hoặc '12'

mysql> SELECT * FROM DemoTable WHERE ClientId LIKE '%10' OR ClientId LIKE '%12';
+----------+
| ClientId |
+----------+
| CLI-110  |
| CLI-210  |
| CLI-1010 |
| CLI-1012 |
+----------+

Giải thích pattern LIKE

  • % đại diện cho 0 hoặc nhiều ký tự bất kỳ
  • '%10' khớp với chuỗi kết thúc bằng '10'
  • '10%' khớp với chuỗi bắt đầu bằng '10'
  • '%10%' khớp với chuỗi chứa '10' ở bất kỳ vị trí nào

Phương pháp thay thế: REGEXP

SELECT * FROM DemoTable WHERE ClientId REGEXP '(10|12)$';

$ trong regex khớp với cuối chuỗi. Hiệu quả hơn khi pattern phức tạp.

Lưu ý hiệu năng

LIKE '%pattern' không thể dùng index (full table scan). Với bảng lớn, cân nhắc:

  • Lưu thêm cột reversed_string để tìm prefix
  • Dùng Full-text search hoặcGenerated column + index