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

แบบสอบถาม MySQL เพื่อจัดเรียงตามอักขระสตริงสุดท้าย?


สำหรับสิ่งนี้ คุณสามารถใช้คำสั่ง CASE ในการเรียงลำดับ ให้ใช้คำสั่ง ORDER BY ให้เราสร้างตารางก่อน -

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

แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก บางระเบียนมีสตริงสุดท้าย เช่น -D เป็นต้น -

mysql> แทรกลงในค่า DemoTable(ClientName) ('Mike');Query OK, 1 แถวได้รับผลกระทบ (0.11 วินาที)mysql> แทรกลงในค่า DemoTable(ClientName) ('John');Query OK, 1 แถวได้รับผลกระทบ ( 0.22 วินาที) mysql> แทรกลงในค่า DemoTable (ชื่อลูกค้า) ('John-D'); ตกลง แบบสอบถาม 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า DemoTable (ชื่อลูกค้า) ('John-Smith'); ตกลงแบบสอบถาม 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่า DemoTable (ชื่อลูกค้า) ('Mike-Smith'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า DemoTable (ชื่อลูกค้า) ('Mike-D');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.15 วินาที)

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

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

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

<ก่อนหน้า>+----------+-----------+| รหัสลูกค้า | ชื่อลูกค้า |+----------+-----------+| 1 | ไมค์ || 2 | จอห์น || 3 | John-D || 4 | จอห์น-สมิธ || 5 | ไมค์-สมิธ || 6 | Mike-D |+----------+-----------+6 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อจัดเรียงตามอักขระสตริงสุดท้ายบางตัว -

mysql> เลือก -> กรณี -> เมื่อ right(ClientName,length(ClientName)-instr(ClientName,'-')) =`ClientName` THEN '' -> else right(`ClientName`,length(`ClientName) `) -INSTR(`ClientName`,'-')) -> สิ้นสุดด้วย `last`, -> `ClientName` -> from -> DemoTable -> ORDER BY -> `last',`ClientName`;

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

<ก่อนหน้า>+-------+-----------+| สุดท้าย | ชื่อลูกค้า |+-------+-----------+| | จอห์น || | ไมค์ || ด | John-D || ด | Mike-D || สมิ ธ | จอห์น-สมิธ || สมิ ธ | Mike-Smith |+-------+------------+6 แถวในชุด (0.00 วินาที)