สำหรับสิ่งนี้ คุณสามารถใช้ ORDER BY IF(CAST()) ให้เราสร้างตารางก่อน -
mysql> สร้างตาราง DemoTable(EmployeeCode varchar(100)); ตกลง ตกลง 0 แถวได้รับผลกระทบ (1.17 วินาที)
แทรกระเบียนบางส่วนในตารางโดยใช้คำสั่ง insert -
mysql> แทรกลงในค่า DemoTable ('190'); Query OK, 1 แถวได้รับผลกระทบ (0.14 วินาที)mysql> แทรกลงในค่า DemoTable ('100'); Query OK, 1 แถวได้รับผลกระทบ (0.30 วินาที) mysql> แทรก ลงในค่า DemoTable('John');Query OK, 1 แถวได้รับผลกระทบ (0.23 วินาที)mysql> แทรกลงในค่า DemoTable ('120');Query OK, 1 แถวได้รับผลกระทบ (0.21 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select -
mysql> เลือก *จาก DemoTable;
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
<ก่อนหน้า>+-------------+| รหัสพนักงาน |+-------------+| 190 || 100 || จอห์น || 120 |+--------------+4 แถวในชุด (0.00 วินาที)ต่อไปนี้เป็นแบบสอบถามเพื่อเรียงลำดับข้อมูล varchar จากน้อยไปมากด้วยค่าสตริงและตัวเลข -
mysql> เลือก *จาก DemoTableORDER BY IF(CAST(EmployeeCode AS SIGNED) =0, 100000000000, CAST(EmployeeCode AS SIGNED));
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ ที่นี่ เรียงลำดับตัวเลขก่อน -
<ก่อนหน้า>+-------------+| รหัสพนักงาน |+-------------+| 100 || 120 || 190 || John |+--------------+4 แถวในชุด 1 คำเตือน (0.00 วินาที)