Rumah  >  Artikel  >  pangkalan data  >  Bagaimana Mengisih Lajur Rentetan yang Mengandungi Nombor dalam SQL Semasa Mengekalkan Tertib?

Bagaimana Mengisih Lajur Rentetan yang Mengandungi Nombor dalam SQL Semasa Mengekalkan Tertib?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-24 19:43:02769semak imbas

How to Sort String Columns Containing Numbers in SQL While Preserving Order?

Mengisih Lajur Rentetan Yang Mengandungi Nombor dalam SQL

Siasatan ini berkenaan dengan mengisih lajur rentetan yang mengandungi nombor, di mana algoritma pengisihan lalai meletakkan nombor dengan mendahului sifar selepas nombor tanpa mendahului sifar, berpotensi mengubah susunan yang dimaksudkan. Pengguna mencari kaedah untuk mengatasi tingkah laku ini menggunakan SQL sahaja.

Penyelesaian yang berkesan untuk masalah ini melibatkan mengasingkan bahagian berangka rentetan menggunakan fungsi CAST dan fungsi SUBSTRING. Dengan mengekstrak subrentetan angka, fungsi CAST menukarnya kepada nilai integer, membenarkan pengisihan yang betul.

Berikut ialah contoh kod:

<code class="sql">SELECT *
FROM table
ORDER BY CAST(SUBSTRING(column, LOCATE(' ', column) + 1) AS SIGNED)</code>

Sebagai contoh, dalam lajur bernama "nama" dengan nilai seperti "a 1", "a 12", "a 2", dan "a 3", pertanyaan akan menghasilkan keputusan berikut:

+----------+
+-- name --+
+----------+
+-- a 1 ---+
+-- a 2 ---+
+-- a 3 ---+
+-- a 12 --+

Kaedah ini secara berkesan mengisih lajur berdasarkan nilai angka, sambil mengekalkan awalan alfanumerik.

Atas ialah kandungan terperinci Bagaimana Mengisih Lajur Rentetan yang Mengandungi Nombor dalam SQL Semasa Mengekalkan Tertib?. 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