Mengisih Lajur Rentetan dengan Nombor Terbenam dalam SQL
Dalam SQL, adalah mungkin untuk mengisih lajur rentetan yang mengandungi nombor menggunakan teknik tertentu. Ini boleh berguna apabila algoritma pengisihan semula jadi pangkalan data seperti MySQL tidak menghasilkan hasil yang diingini.
Untuk mencapai pengisihan tersuai lajur rentetan dengan nombor, beberapa pendekatan boleh digunakan:
Menggunakan CAST dan SUBSTRING:
<code class="sql">SELECT * FROM table ORDER BY CAST(SUBSTRING(column,LOCATE(' ',column)+1) AS SIGNED)</code>
Teknik ini memecahkan lajur kepada dua bahagian: awalan sebelum ruang dan nombor selepasnya. Nombor tersebut kemudiannya dilemparkan kepada jenis angka (dalam kes ini, DANDATANGANI) untuk perbandingan.
Menggunakan SUBSTRING_INDEX:
<code class="sql">ORDER BY SUBSTRING_INDEX(st, " ", 1) ASC, CAST(SUBSTRING_INDEX(st, " ", -1) AS SIGNED)</code>
Pendekatan ini menggunakan fungsi SUBSTRING_INDEX untuk ekstrak komponen awalan dan nombor. Ia kemudian mengisih dahulu mengikut awalan dan kemudian mengikut nombor yang ditukar.
Nota: Jika corak lajur berbeza daripada "WORD_space_NUMBER", pendekatan yang berbeza mungkin diperlukan.
Contoh:
Sample Data | Natural Sorting | Custom Sorting |
---|---|---|
a 1, a 12, a 6, a 11 | a 1, a 12, a 2, a 3 | a 1, a 2, a 3, a 12 |
b 1, b 12, b 6, b 11 | b 1, b 12, b 2, b 3 | b 1, b 2, b 3, b 12 |
Dengan menggunakan teknik ini, adalah mungkin untuk mengisih lajur rentetan dengan nombor terbenam dalam cara tersuai, memastikan hasil sejajar dengan keperluan aplikasi tertentu.
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Lajur Rentetan dengan Nombor Terbenam dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!