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
Susan Sarandonasal
2024-12-28 10:40:12825semak imbas

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

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!

Kenyataan:
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