Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mengisih Lajur Rentetan dengan Nombor Terbenam dalam SQL?

Bagaimana untuk Mengisih Lajur Rentetan dengan Nombor Terbenam dalam SQL?

Linda Hamilton
Linda Hamiltonasal
2024-10-26 08:09:30793semak imbas

How to Sort String Columns with Embedded Numbers in SQL?

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!

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