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

Lấy giá trị MAX từ cột VARCHAR trong MySQL

Hàm MAX() trên cột VARCHAR so sánh theo thứ tự từ điển (lexicographic). Kết hợp SUBSTRING() để so sánh phần số nếu cần.

Tạo bảng và dữ liệu

mysql> CREATE TABLE DemoTable (Id VARCHAR(200));
Query OK, 0 rows affected (0.52 sec)
mysql> INSERT INTO DemoTable VALUES('2019-0515-1980'), ('2019-0516-780'), ('2019-0517-2780');
Query OK, 3 rows affected (0.49 sec)

Truy vấn MAX có điều kiện tiền tố

mysql> SELECT MAX(Id) FROM DemoTable
    -> WHERE Id LIKE CONCAT(SUBSTRING(Id, 1, 4), '%');

Kết quả:

+----------------+
| MAX(Id)        |
+----------------+
| 2019-0517-2780 |
+----------------+
1 row in set (0.00 sec)

Giải thích: SUBSTRING(Id, 1, 4) lấy '2019', CONCAT(..., '%') tạo pattern '2019%'. MAX() trên chuỗi '2019-0517-2780' > '2019-0516-780' > '2019-0515-1980' (so sánh ký tự).

Cảnh báo: So sánh chuỗi số như '780' vs '1980' cho kết quả sai so với số học. Nên tách cột hoặc ép kiểu.