Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เปรียบเทียบตัวเลขที่เก็บเป็น VARCHAR ใน MySQL

ใช้ 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 เป็นจริง