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

เรียงลำดับสตริงเป็นตัวเลขด้วย CAST() ใน MySQL

คอลัมน์ชนิด VARCHAR ที่เก็บตัวเลขจะถูกเรียงแบบข้อความ (1, 10, 2, 20...) ใช้ CAST(... AS SIGNED) แปลงเป็นตัวเลขก่อนเรียง

สร้างตารางและเพิ่มข้อมูล

mysql> CREATE TABLE DemoTable (Id VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES ('3'), ('20'), ('34'), ('21'), ('78'), ('90');

ดูข้อมูล (เรียงแบบสตริง)

mysql> SELECT * FROM DemoTable;
+------+
| Id   |
+------+
| 3    |
| 20   |
| 34   |
| 21   |
| 78   |
| 90   |
+------+

เรียงเป็นตัวเลข (มากไปน้อย)

mysql> SELECT * FROM DemoTable ORDER BY CAST(Id AS SIGNED) DESC;

ผลลัพธ์

+------+
| Id   |
+------+
| 90   |
| 78   |
| 34   |
| 21   |
| 20   |
| 3    |
+------+

ชนิดข้อมูลใน CAST:

  • SIGNED — จำนวนเต็มมีเครื่องหมาย
  • UNSIGNED — จำนวนเต็มไม่มีเครื่องหมาย
  • DECIMAL — ทศนิยม
  • CHAR — สตริง