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

เราจะเรียงลำดับแบบสอบถามโดยใช้ ORDER BY CASE เมื่อ REGEXP ได้อย่างไร


ใช้นิพจน์ทั่วไปร่วมกับคำสั่ง CASE ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable (รหัส int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, ค่า varchar(20) ); เคียวรีตกลง 0 แถวได้รับผลกระทบ (0.66 วินาที)

แทรกระเบียนบางส่วนในตารางโดยใช้คำสั่ง insert -

mysql> แทรกลงในค่า DemoTable(Value) ('101');Query OK, 1 แถวได้รับผลกระทบ (0.20 วินาที)mysql> แทรกลงในค่า DemoTable(Value) ('P'); Query OK, 1 แถวได้รับผลกระทบ ( 0.19 วินาที) mysql> แทรกลงในค่า DemoTable(Value) ('A'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรกลงในค่า DemoTable (ค่า) ('53'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.13 วินาที) mysql> แทรกลงในค่า DemoTable(Value) ('R'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที) mysql> แทรกลงในค่า DemoTable (ค่า) ('C'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.18 วินาที) mysql> แทรกลงในค่า DemoTable (ค่า) ('190'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select -

mysql> เลือก *จาก DemoTable;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+----+-------+| รหัส | ความคุ้มค่า |+---+-------+| 1 | 101 || 2 | พี || 3 | A || 4 | 53 || 5 | อาร์ || 6 | ค || 7 | 190 |+----+-------+7 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อเรียงลำดับแบบสอบถามด้วย ORDER BY CASE -

mysql> SELECT Id, ค่าจาก DemoTable เรียงตามกรณีเมื่อค่า REGEXP '[a-zA-Z]' กลายเป็น 0 อย่างอื่น 0+Value END ASC, ค่า;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+----+-------+| รหัส | ความคุ้มค่า |+---+-------+| 3 | A || 6 | ค || 2 | พี || 5 | อาร์ || 4 | 53 || 1 | 101 || 7 | 190 |+---+-------+7 แถวในชุด (0.06 วินาที)