Khi cột chứa chuỗi dạng 'STU201', 'STU290' (tiền tố chữ + số), dùng SUBSTRING tách phần số rồi CAST ... AS UNSIGNED để so sánh số học.
Ví dụ
Tạo bảng mã sách:
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentBookCode varchar(200)
);
Query OK, 0 rows affected (0.56 sec)Dữ liệu: STU201, STU202, STU203, STU290, STU234
Tìm MAX phần số (bỏ qua 3 ký tự đầu 'STU')
mysql> select MAX(CAST(SUBSTRING(StudentBookCode FROM 4) AS UNSIGNED)) from DemoTable;
+----------------------------------------------------------+ | MAX(CAST(SUBSTRING(StudentBookCode FROM 4) AS UNSIGNED)) | +----------------------------------------------------------+ | 290 | +----------------------------------------------------------+
Giải thích:
SUBSTRING(StudentBookCode FROM 4)lấy từ ký tự thứ 4 trở đi (bỏ 'STU')CAST(... AS UNSIGNED)chuyển chuỗi số thành số nguyên không dấuMAX()tìm giá trị lớn nhất
Lưu ý: Cách này giả định tiền tố độ dài cố định. Nếu tiền tố độ dài biến đổi, dùng REGEXP hoặc SUBSTRING_INDEX tách theo delimiter.