Bagaimana untuk Mengisih Lajur Rentetan dengan Nombor Terbenam dalam SQL?

Linda Hamilton
Lepaskan: 2024-10-26 08:09:30
asal
792 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!