MySQL Query untuk Menukar Sebahagian Teks Bukan Angka kepada Nombor
Dalam MySQL, adalah mungkin untuk mengekstrak bahagian angka daripada teks bukan angka dan tukarkannya kepada jenis data berangka untuk membolehkan pengisihan yang betul.
Pertimbangkan kes lajur yang mengandungi pengecam yang menggabungkan nama dan nombor dalam format "nombor nama." Mengisih baris berdasarkan lajur ini menggunakan susunan aksara lalai menghasilkan tertib yang tidak diingini:
name-1 name-11 name-12 name-2
Untuk menyelesaikan isu ini, anda boleh mengekstrak bahagian angka daripada teks menggunakan fungsi SUBSTRING_INDEX():
SUBSTRING_INDEX(field,'-',-1)
Fungsi ini mengekstrak subrentetan selepas kejadian terakhir aksara "-", dengan berkesan mengasingkan angka bahagian.
Seterusnya, anda boleh menukar subrentetan yang diekstrak menjadi integer tidak ditandatangani menggunakan fungsi CONVERT():
CONVERT(SUBSTRING_INDEX(field,'-',-1),UNSIGNED INTEGER) AS num
Langkah ini menukar rentetan aksara kepada jenis data berangka yang boleh digunakan untuk perbandingan berangka.
Akhir sekali, anda boleh menggunakan klausa ORDER BY untuk mengisih baris berdasarkan bahagian berangka yang diekstrak dan ditukar:
ORDER BY num
Pertanyaan ini harus menghasilkan susunan disusun yang diingini:
name-1 name-2 name-11 name-12
Perhatikan bahawa pendekatan ini menganggap bahawa bahagian bukan angka pengecam tidak akan mengandungi sebarang nombor. Jika ini tidak dijamin, anda mungkin perlu menggunakan teknik manipulasi rentetan yang lebih kompleks.
Atas ialah kandungan terperinci Bagaimana Mengisih Baris MySQL Secara Berangka Apabila ID Mengandungi Teks Abjad Angka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!