Tạo bảng mã phòng ban
mysql> CREATE TABLE DemoTable1381 (
-> DepartmentId VARCHAR(40)
-> );
Query OK, 0 rows affected (0.48 sec)
mysql> INSERT INTO DemoTable1381 VALUES('IT794');
mysql> INSERT INTO DemoTable1381 VALUES('AT1034');
mysql> INSERT INTO DemoTable1381 VALUES('IT967');
mysql> INSERT INTO DemoTable1381 VALUES('IT874');
mysql> INSERT INTO DemoTable1381 VALUES('AT967');
Dữ liệu
mysql> SELECT * FROM DemoTable1381;
+--------------+
| DepartmentId |
+--------------+
| IT794 |
| AT1034 |
| IT967 |
| IT874 |
| AT967 |
+--------------+
Truy vấn: MAX của nhóm bắt đầu bằng 'IT'
Dùng RLIKE lọc tiền tố, SUBSTR bỏ 2 ký tự đầu, CAST ... UNSIGNED chuyển sang số:
mysql> SELECT MAX(CAST(SUBSTR(TRIM(DepartmentId), 3) AS UNSIGNED))
-> FROM DemoTable1381
-> WHERE DepartmentId RLIKE '^IT';
Kết quả: 967
+-----------------------------------------------------+
| MAX(CAST(SUBSTR(TRIM(DepartmentId),3) AS UNSIGNED)) |
+-----------------------------------------------------+
| 967 |
+-----------------------------------------------------+
Giải thích: RLIKE '^IT' khớp chuỗi bắt đầu bằng IT. SUBSTR(...,3) lấy từ ký tự thứ 3 trở đi. CAST(... AS UNSIGNED) chuyển thành số nguyên không dấu để so sánh đúng giá trị số.