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

เป็นไปได้ไหมที่จะจัดเรียงข้อมูล varchar ตามลำดับจากน้อยไปมากที่มีทั้งค่าสตริงและตัวเลขด้วย MySQL?


สำหรับสิ่งนี้ คุณสามารถใช้ 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 วินาที)