Rumah  >  Artikel  >  pangkalan data  >  Bagaimana Mengisih Lajur Rentetan yang Mengandungi Nombor dalam SQL: Menangani Sifar Utama dan Mencapai Susunan Berangka?

Bagaimana Mengisih Lajur Rentetan yang Mengandungi Nombor dalam SQL: Menangani Sifar Utama dan Mencapai Susunan Berangka?

Linda Hamilton
Linda Hamiltonasal
2024-10-26 01:25:02116semak imbas

How to Sort String Columns Containing Numbers in SQL: Addressing Leading Zeros and Achieving Numerical Order?

Mengisih Lajur Rentetan yang Mengandungi Nombor dalam SQL

Apabila cuba mengisih lajur rentetan yang mengandungi nilai berangka menggunakan susunan lalai dalam SQL, keadaan semula jadi algoritma pengisihan mungkin tidak menghasilkan hasil yang diingini. Khususnya, nombor dengan sifar pendahuluan boleh diletakkan sewenang-wenangnya berbanding dengan nilai berangkanya.

Untuk menangani isu ini, pertimbangkan pertanyaan SQL berikut:

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

Pertanyaan ini menganggap bahawa data lajur mengikuti corak "STRING SPACE NUMBER" dan menggunakan fungsi SUBSTRING untuk mengekstrak bahagian nombor setiap rentetan. Dengan menghantar nilai yang diekstrak kepada integer yang ditandatangani, pertanyaan boleh mengisih hasil berdasarkan nilai berangka dan bukannya perwakilan rentetan.

Berikut ialah contoh untuk menunjukkan kefungsian:

<code class="sql">INSERT INTO t (st) VALUES ('a 1'),('a 12'),('a 6'),('a 11');
SELECT * FROM t ORDER BY st;

+----+------+
| id | st   |
+----+------+
| 1  | a 1  |
| 4  | a 11 |
| 2  | a 12 |
| 3  | a 6  |
+----+------+

SELECT * FROM t ORDER BY CAST(SUBSTRING(st,LOCATE(' ',st)+1) AS SIGNED);

+----+------+
| id | st   |
+----+------+
| 1  | a 1  |
| 3  | a 6  |
| 4  | a 11 |
| 2  | a 12 |
+----+------+</code>

Pertanyaan ini mengisih baris dengan betul berdasarkan nilai berangka dalam rentetan. Jika data rentetan mengikut corak yang berbeza, pelarasan mungkin diperlukan untuk mengekstrak bahagian nombor dengan tepat.

Atas ialah kandungan terperinci Bagaimana Mengisih Lajur Rentetan yang Mengandungi Nombor dalam SQL: Menangani Sifar Utama dan Mencapai Susunan Berangka?. 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