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

Lấy giá trị lớn hơn ngưỡng từ cột VARCHAR trong MySQL

Khi cột lưu số dưới dạng chuỗi (VARCHAR), dùng CAST(... AS SIGNED) hoặc CAST(... AS UNSIGNED) để chuyển kiểu trước khi so sánh.

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

mysql> CREATE TABLE DemoTable(Value VARCHAR(100)); 
Query OK, 0 rows affected (1.02 sec)

mysql> INSERT INTO DemoTable VALUES 
('900'), ('1090'), ('860'), ('12345'), ('908345'); 
Query OK, 5 rows affected

Tìm giá trị lớn nhất (sau khi ép kiểu số)

mysql> SELECT MAX(CAST(Value AS SIGNED)) FROM DemoTable;

Kết quả:

+----------------------------+
| MAX(CAST(Value AS SIGNED)) |
+----------------------------+
| 908345                     |
+----------------------------+

Giải thích: Nếu không CAST, so sánh chuỗi sẽ theo thứ tự từ điển: '908345' < '900' (vì '9'='9', '0'<'0'...). Ép kiểu SIGNED/UNSIGNED đảm bảo so sánh theo giá trị số.

Lọc giá trị > 999:

SELECT * FROM DemoTable WHERE CAST(Value AS SIGNED) > 999;

Lưu ý: Nếu cột chứa giá trị không phải số (ví dụ 'abc'), CAST sẽ trả về 0 và không báo lỗi (chỉ warning).