Cú pháp
Sử dụng hàm RIGHT() để lấy N ký tự cuối cùng:
SELECT RIGHT(ten_cot, so_ky_tu) AS ten_alias FROM ten_bang;
Ví dụ: Lấy 5 ký tự cuối tên sách
1. Tạo bảng
mysql> CREATE TABLE gettingLast5Characters ( -> BookName VARCHAR(100) -> ); Query OK, 0 rows affected (0.73 sec)
2. Chèn dữ liệu
mysql> INSERT INTO gettingLast5Characters VALUES('Introduction to C');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO gettingLast5Characters VALUES('C in Depth');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO gettingLast5Characters VALUES('Introduction to Java');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO gettingLast5Characters VALUES('Let us C');
Query OK, 1 row affected (0.51 sec)
3. Dữ liệu gốc
mysql> SELECT * FROM gettingLast5Characters;
+----------------------+ | BookName | +----------------------+ | Introduction to C | | C in Depth | | Introduction to Java | | Let us C | +----------------------+ 4 rows in set (0.00 sec)
4. Lấy 5 ký tự cuối
mysql> SELECT RIGHT(BookName, 5) AS Last5Character FROM gettingLast5Characters;
+----------------+ | Last5Character | +----------------+ | to C | | Depth | | Java | | us C | +----------------+ 4 rows in set (0.04 sec)
Lưu ý: KHOẢNG TRẮNG CŨNG ĐƯỢC ĐẾM
Kết quả "to C" có khoảng trắng đầu vì chuỗi gốc là "Introduction to C" (khoảng trắng trước C).
Hàm liên quan
| Hàm | Mô tả | Ví dụ | Kết quả |
|---|---|---|---|
| LEFT(str, n) | N ký tự đầu | LEFT('Hello', 2) | He |
| RIGHT(str, n) | N ký tự cuối | RIGHT('Hello', 2) | lo |
| SUBSTRING(str, start, len) | Con chuỗi tùy ý | SUBSTRING('Hello', 2, 3) | ell |
| SUBSTRING_INDEX(str, delim, count) | Cắt theo dấu phân cách | SUBSTRING_INDEX('a.b.c', '.', -1) | c |
Ứng dụng thực tế
Lấy phần mở rộng file (extension)
SELECT RIGHT(filename, LOCATE('.', REVERSE(filename)) - 1) AS extension
FROM files;
Lấy 4 chữ số cuối thẻ tín dụng (masking)
SELECT CONCAT('****', RIGHT(card_number, 4)) AS masked_card FROM payments;
Lấy domain từ email (phương pháp khác)
SELECT RIGHT(email, LENGTH(email) - LOCATE('@', email)) AS domain FROM users;
Lưu ý hiệu năng
RIGHT()không dùng index được- Tránh dùng trong WHERE clause trên bảng lớn
- Cân nhắc lưu cột computed nếu truy vấn thường xuyên