Sử dụng SUBSTR() (alias của SUBSTRING()) với vị trí bắt đầu âm để lấy N ký tự cuối.
Tạo bảng
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> FirstName VARCHAR(20)
-> );
Chèn dữ liệu
mysql> INSERT INTO DemoTable(FirstName) VALUES('John'), ('Carol'), ('Robert'), ('Chris'), ('David');
Xem dữ liệu
mysql> SELECT * FROM DemoTable;
+----+-----------+ | Id | FirstName | +----+-----------+ | 1 | John | | 2 | Carol | | 3 | Robert | | 4 | Chris | | 5 | David | +----+-----------+
Lấy 3 ký tự cuối
mysql> SELECT SUBSTR(FirstName, -3) FROM DemoTable;
+----------------------+ | SUBSTR(FirstName,-3) | +----------------------+ | ohn | | rol | | ert | | ris | | vid | +----------------------+
Giải thích SUBSTR với vị trí âm
SUBSTR(str, -N): Trả vềNký tự cuối của chuỗi- Tương đương:
SUBSTR(str, LENGTH(str) - N + 1, N) SUBSTR(str, pos)không có length → lấy từ pos đến hết chuỗi
Các hàm trích xuất chuỗi liên quan
| Hàm | Chức năng | Ví dụ |
|---|---|---|
LEFT(str, n) | n ký tự đầu | LEFT('abcde', 2) → 'ab' |
RIGHT(str, n) | n ký tự cuối | RIGHT('abcde', 2) → 'de' |
SUBSTRING(str, start, len) | Trích từ start độ dài len | SUBSTRING('abcde', 2, 2) → 'bc' |
SUBSTRING_INDEX(str, delim, count) | Tách theo dấu phân cách | SUBSTRING_INDEX('a,b,c', ',', -1) → 'c' |
Lưu ý
- Với chuỗi multi-byte (UTF-8),
LENGTHtính byte,CHAR_LENGTHtính ký tự. DùngSUBSTR(str, -3)an toàn vì MySQL xử lý ký tự đúng - Chuỗi ngắn hơn 3 ký tự: trả về toàn bộ chuỗi (không lỗi)