Giới thiệu
Hàm RIGHT(str, len) trích xuất len ký tự cuối của chuỗi. Kết hợp với WHERE để lọc các hàng có chữ số cuối cùng mong muốn.
Ví dụ thực hành
1. Tạo bảng DemoTable823
mysql> CREATE TABLE DemoTable823 (Value VARCHAR(100));
2. Chèn dữ liệu
mysql> INSERT INTO DemoTable823 VALUES ('9847826'),('84747464'),('9899889883'),('123456');
3. Tìm hàng kết thúc bằng '6'
mysql> SELECT * FROM DemoTable823 WHERE RIGHT(Value, 1) = '6';
4. Kết quả
+---------+
| Value |
+---------+
| 9847826 |
| 123456 |
+---------+
Mở rộng
-- 2 chữ số cuối là '56'
SELECT * FROM DemoTable823 WHERE RIGHT(Value, 2) = '56';
-- Kết thúc bằng số chẵn (0,2,4,6,8)
SELECT * FROM DemoTable823 WHERE RIGHT(Value, 1) IN ('0','2','4','6','8');
-- Dùng SUBSTRING (tương đương)
SELECT * FROM DemoTable823 WHERE SUBSTRING(Value, -1) = '6';
Lưu ý hiệu suất
RIGHT(col, n) = 'x'không sử dụng index thông thường (function trên cột).- Nếu truy vấn thường xuyên: tạo generated column lưu ký tự cuối + index:
ALTER TABLE DemoTable823 ADD COLUMN last_digit CHAR(1) GENERATED ALWAYS AS (RIGHT(Value, 1)) STORED, ADD INDEX idx_last_digit (last_digit); - Hoặc lưu riêng cột
last_digitkhi INSERT/UPDATE.
Hàm liên quan
LEFT(str, len): Lấy ký tự đầu.SUBSTRING(str, pos, len)/SUBSTR(): Linh hoạt hơn (vị trí âm = tính từ cuối).ENDS_WITH()(MySQL 8.0+):WHERE ENDS_WITH(Value, '6')— dễ đọc hơn.