Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengisih Data Abjad Angka dengan betul dalam Klausa `ORDER BY` MySQL?

Bagaimana untuk Mengisih Data Abjad Angka dengan betul dalam Klausa `ORDER BY` MySQL?

DDD
DDDasal
2024-12-21 03:45:13306semak imbas

How to Correctly Sort Alphanumeric Data in MySQL's `ORDER BY` Clause?

MySQL 'Order By' - Isih Abjad Angka Dengan Betul

Dalam MySQL, klausa 'Order By' mengisih data berdasarkan nilai lajur yang ditentukan. Walau bagaimanapun, apabila berurusan dengan data alfanumerik, kaedah pengisihan lalai mengutamakan digit pertama, yang membawa kepada susunan yang salah.

Memahami Masalah

Sebagai contoh, jika kita mempunyai data berikut:

1
2
3
4
5
6
7
8
9
10
11
12

Dan kami melaksanakan pertanyaan:

select * from table order by xxxxx asc

Hasilnya akan diisih seperti berikut:

1
10
11
12
2
3
4
5
6
7
8
9

Ini kerana susunan ditentukan oleh digit pertama, tanpa mengira aksara berikutnya.

Menyelesaikan Masalah

Untuk mengisih data abjad angka dengan betul, kita boleh menggunakan pelbagai helah:

  1. Isih Numerik Alpha Menggunakan Binari Cara: Ini melibatkan penukaran nilai abjad angka kepada perduaan dan mengisihnya menggunakan nilai perduaan.
  2. Pengisihan Angka Alfa Menggunakan Cara Hantar: Pendekatan ini membuang nilai abjad angka sebagai integer bertanda dan mengisihnya menggunakan perwakilan integer.
  3. Semula jadi Isih: Kaedah ini mengisih data berdasarkan susunan semula jadi nilai, mengambil kira kedua-dua digit dan aksara.
  4. Isih Nilai Angka Bercampur dengan Nilai Abjad Angka: Dalam kes ini, kami boleh menukar nilai alfanumerik kepada integer tidak bertanda dan mengisihnya bersama-sama dengan angka nilai.

Contoh Kod

Isih Numerik Alpha Menggunakan Cara Bin:

SELECT 
tbl_column, 
BIN(tbl_column) AS binray_not_needed_column
FROM db_table
ORDER BY binray_not_needed_column ASC , tbl_column ASC

Isih Semulajadi:

SELECT alphanumeric, integer
       FROM sorting_test
       ORDER BY LENGTH(alphanumeric), alphanumeric  

Isih Nilai Angka Bercampur dengan Nilai Alfanumerik:

SELECT version
FROM version_sorting
ORDER BY CAST(version AS UNSIGNED), version;

Dengan menggunakan helah ini, kami boleh memastikan data abjad angka diisih dengan betul, mengekalkan susunan item yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Data Abjad Angka dengan betul dalam Klausa `ORDER BY` MySQL?. 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