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