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

Tìm bản ghi có chữ số cuối cụ thể trong cột MySQL với RIGHT()

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_digit khi 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.