Mengisih Medan Varchar Secara Numerik dalam MySQL
Menghadapi isu dengan mengisih nilai angka yang disimpan sebagai rentetan dalam medan varchar? Dalam MySQL, pengisihan leksikografi boleh membawa kepada hasil yang tidak dijangka, dengan nilai seperti "42" mendahului "9".
Menangani Isu
Untuk membetulkannya, pertimbangkan untuk mengubah suai anda pertanyaan untuk menghantar medan varchar secara eksplisit sebagai integer yang ditandatangani sebelum mengisih. Penukaran ini memaksa nilai ke dalam perwakilan berangkanya, memudahkan pengisihan berangka yang betul.
Pertanyaan Diubah Suai:
Ganti pertanyaan asal anda dengan versi diubah suai berikut:
SELECT * FROM table ORDER BY CAST(number as SIGNED INTEGER) ASC
Memahami Cast:
Fungsi CAST() menukar medan nombor daripada varchar kepada integer yang ditandatangani. Ini memastikan bahawa MySQL menganggap nilai sebagai data angka dan bukannya data aksara.
Tertib Isih Menaik:
Dengan menentukan ASC dalam susunan mengikut klausa, anda mengarahkan MySQL untuk mengisih keputusan dalam tertib menaik. Ini bermakna nilai berangka terkecil akan muncul dahulu.
Dengan melaksanakan pertanyaan yang diubah suai ini, anda akan mengisih medan varchar anda secara berangka dengan berkesan, memastikan nilai seperti "9" didahulukan sebelum "42."
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengisih Medan VARCHAR Secara Numerik dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!