หากนักแสดงของคุณไม่ทำงาน คุณสามารถใช้ yourColumnName*1 กับคำสั่งย่อย ORDER BY
การใช้ชื่อคอลัมน์ของคุณ*1 ไวยากรณ์มีดังนี้:
เลือก yourColumnName1,yourColumnName2,...N จาก yourTableName ORDER BY yourColumnName*1 DESC;
คุณยังสามารถใช้ตัวดำเนินการ CAST() ไวยากรณ์มีดังนี้:
เลือก yourColumnName1,yourColumnName2,...N จาก yourTableName ORDER BY CAST(yourColumnName as DECIMAL(8,2)) DESC;
เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้:
mysql> สร้างตาราง VarcharColumnAsFloatDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> จำนวน varchar (20), -> คีย์หลัก (Id) -> ); สืบค้นตกลง 0 แถวได้รับผลกระทบ (1.01 วินาที)ก่อน>แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้:
mysql> แทรกลงในค่า VarcharColumnAsFloatDemo(Amount) ('3446.23'); สืบค้นตกลง 1 แถวได้รับผลกระทบ (0.10 วินาที)mysql> แทรกลงในค่า VarcharColumnAsFloatDemo(Amount) ('2464.46'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว ( 0.16 วินาที) mysql> แทรกลงในค่า VarcharColumnAsFloatDemo (จำนวน) ('6465.78'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า VarcharColumnAsFloatDemo (จำนวน) ('6464.98'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.44 วินาที) mysql> แทรกลงในค่า VarcharColumnAsFloatDemo (จำนวน) ('645.90'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที) mysql> แทรกลงในค่า VarcharColumnAsFloatDemo (จำนวน) ('6465.99'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.23 วินาที) mysql> แทรกลงในค่า VarcharColumnAsFloatDemo (จำนวน) ('3745.76'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที)แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้:
mysql> เลือก *จาก VarcharColumnAsFloatDemo;ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+----+---------+| รหัส | จำนวน |+---+---------+| 1 | 3446.23 || 2 | 2464.46 || 3 | 6465.78 || 4 | 6464.98 || 5 | 645.90 || 6 | 6465.99 || 7 | 3745.76 |+----+---------+7 แถวในชุด (0.00 วินาที)
นี่คือแบบสอบถามเพื่อจัดเรียง varchar เป็น float โดยใช้ตัวดำเนินการ cast:
mysql> เลือก Id, จำนวนจากคำสั่ง VarcharColumnAsFloatDemo โดย cast (Amount as DECIMAL(8,2)) DESC;
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+----+---------+| รหัส | จำนวน |+---+---------+| 6 | 6465.99 || 3 | 6465.78 || 4 | 6464.98 || 7 | 3745.76 || 1 | 3446.23 || 2 | 2464.46 || 5 | 645.90 |+----+---------+7 แถวในชุด (0.00 วินาที)วิธีที่สองมีดังต่อไปนี้โดยใช้ yourColumnName*1:
mysql> เลือก Id, จำนวนเงินจากลำดับ VarcharColumnAsFloatDemo ตามจำนวน*1 เรียง;
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+----+---------+| รหัส | จำนวน |+---+---------+| 6 | 6465.99 || 3 | 6465.78 || 4 | 6464.98 || 7 | 3745.76 || 1 | 3446.23 || 2 | 2464.46 || 5 | 645.90 |+----+---------+7 แถวในชุด (0.00 วินาที)