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!