Rumah > pangkalan data > tutorial mysql > Bagaimana Mengisih Baris MySQL Secara Berangka Apabila ID Mengandungi Teks Abjad Angka?

Bagaimana Mengisih Baris MySQL Secara Berangka Apabila ID Mengandungi Teks Abjad Angka?

Susan Sarandon
Lepaskan: 2024-12-28 10:40:12
asal
814 orang telah melayarinya

How to Sort MySQL Rows Numerically When IDs Contain Alphanumeric Text?

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
Salin selepas log masuk

Untuk menyelesaikan isu ini, anda boleh mengekstrak bahagian angka daripada teks menggunakan fungsi SUBSTRING_INDEX():

SUBSTRING_INDEX(field,'-',-1)
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

Pertanyaan ini harus menghasilkan susunan disusun yang diingini:

name-1
name-2
name-11
name-12
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan