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

Tìm giá trị lớn nhất từ cột VARCHAR trong MySQL

Giới thiệu

Khi cột lưu số nhưng kiểu dữ liệu là VARCHAR, hàm MAX() sẽ so sánh theo thứ tự từ điển (lexicographical), dẫn đến kết quả sai (ví dụ: '9' > '10001'). Giải pháp là ép kiểu (CAST) sang số trước khi lấy max.

Cú pháp

SELECT MAX(CAST(cot_varchar AS UNSIGNED)) FROM ten_bang;

Ví dụ minh họa

Bước 1: Tạo bảng và chèn dữ liệu

CREATE TABLE DemoTable2030 (Value VARCHAR(20));
INSERT INTO DemoTable2030 VALUES ('8'), ('1'), ('10001'), ('901');

Bước 2: Sai nếu dùng MAX trực tiếp

SELECT MAX(Value) FROM DemoTable2030; -- Kết quả: '901' (sai về mặt số)

Bước 3: Đúng khi ép kiểu

SELECT MAX(CAST(Value AS UNSIGNED)) FROM DemoTable2030;

Kết quả:

+------------------------------+
| max(cast(Value as unsigned)) |
+------------------------------+
| 10001                        |
+------------------------------+

Lưu ý: UNSIGNED dành cho số không âm. Nếu có số âm, dùng SIGNED. Cách này cũng áp dụng cho MIN, ORDER BY, v.v.