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

Lấy giá trị lớn nhất từ cột alphanumeric theo tiền tố cụ thể trong MySQL

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ố.