ใช้ CAST(... AS SIGNED) หรือ CAST(... AS UNSIGNED) แปลง VARCHAR เป็นตัวเลขก่อนเปรียบเทียบ
สร้างตารางตัวอย่าง
mysql> CREATE TABLE DemoTable (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentScore VARCHAR(100)
-> );
เพิ่มข้อมูลตัวอย่าง
mysql> INSERT INTO DemoTable(StudentScore) VALUES('90');
mysql> INSERT INTO DemoTable(StudentScore) VALUES('100');
mysql> INSERT INTO DemoTable(StudentScore) VALUES('56');
mysql> INSERT INTO DemoTable(StudentScore) VALUES('98');
แสดงข้อมูล
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+-----------+--------------+ | StudentId | StudentScore | +-----------+--------------+ | 1 | 90 | | 2 | 100 | | 3 | 56 | | 4 | 98 | +-----------+--------------+
คำสั่งเปรียบเทียบคะแนนมากกว่า 91
mysql> SELECT * FROM DemoTable WHERE CAST(StudentScore AS SIGNED) > 91;
ผลลัพธ์ (ได้ 100 และ 98):
+-----------+--------------+ | StudentId | StudentScore | +-----------+--------------+ | 2 | 100 | | 4 | 98 | +-----------+--------------+
คำอธิบาย: หากเปรียบเทียบ VARCHAR โดยตรง '100' > '91' จะเป็นเท็จ (เพราะ '1' < '9') ต้อง CAST เป็นตัวเลขก่อน จะได้ 100 > 91 เป็นจริง