Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menyusun Data Abjad Angka dalam MySQL Menggunakan ORDER BY?
MySQL "Order By" - Isih Data Abjad Angka Dengan Betul
Masalah:
Apabila menggunakan klausa "ORDER BY" dengan data alfanumerik dalam MySQL, pengisihan selalunya mengutamakan yang pertama digit, mengakibatkan urutan yang salah. Contohnya, data berikut:
1 2 3 4 5 6 7 8 9 10 11 12
Akan diisih sebagai:
1 10 11 12 2 3 4 5 6 7 8 9
Penyelesaian:
Terdapat beberapa pendekatan untuk mengisih data abjad angka dengan betul, termasuk:
1. Pengisihan Angka Alfa
Kaedah ini menggunakan fungsi BIN() untuk menukar data alfanumerik kepada perwakilan binari, yang kemudiannya digunakan untuk mengisih.
SELECT * FROM table ORDER BY BIN(name) ASC, name ASC;
2 . Isih Semulajadi
Isih semulajadi melibatkan membandingkan nilai-nilai watak demi watak, dengan mengambil kira nombor dan huruf. Ini boleh dicapai menggunakan fungsi perbandingan tersuai atau dengan bergantung pada perpustakaan luaran yang menyediakan fungsi sedemikian.
SELECT * FROM table ORDER BY name DESC; -- Using a customized comparison function
3. Mengisih Nilai Berangka Bercampur dengan Nilai Abjad Angka
Apabila berurusan dengan gabungan nilai angka dan abjad angka, fungsi CAST() boleh digunakan untuk menukar nilai angka kepada integer tidak bertanda, yang kemudiannya digunakan untuk menyusun.
SELECT * FROM table ORDER BY CAST(name AS UNSIGNED), name;
4. Isih Berasaskan Panjang
Kaedah ini mengisih data berdasarkan panjang setiap nilai, dengan nilai yang lebih pendek muncul dahulu.
SELECT * FROM table ORDER BY LENGTH(name), name;
Nota: The pendekatan khusus untuk digunakan mungkin berbeza-beza bergantung pada keperluan khusus dan sumber yang tersedia dalam persekitaran MySQL.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyusun Data Abjad Angka dalam MySQL Menggunakan ORDER BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!