Rumah >pangkalan data >tutorial mysql >Bagaimana Mengisih Lajur VARCHAR dengan Nilai Angka dan Abjad Campuran Secara Numerik dalam Pelayan SQL?

Bagaimana Mengisih Lajur VARCHAR dengan Nilai Angka dan Abjad Campuran Secara Numerik dalam Pelayan SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-04 01:52:40407semak imbas

How to Sort VARCHAR Columns with Mixed Numeric and Alphabetic Values Numerically in SQL Server?

Mengisih Lajur VARCHAR dengan Nilai Angka dalam Pelayan SQL

Apabila berurusan dengan lajur VARCHAR yang mungkin mengandungi kedua-dua nombor dan huruf, pengisihan membentangkan cabaran jika anda mahu nilai berangka dipesan secara berangka. Secara lalai, SQL Server akan mengisih lajur sedemikian mengikut abjad, yang tidak diingini dalam kes ini.

Untuk mencapai gelagat pengisihan yang diingini, penyelesaian melibatkan padding nilai berangka dengan aksara untuk memastikan semua rentetan mempunyai panjang yang sama. Ini membolehkan SQL Server mengisih data secara berangka.

Berikut ialah contoh pertanyaan yang menunjukkan pendekatan ini:

select MyColumn
from MyTable
order by
    case IsNumeric(MyColumn)
        when 1 then Replicate('0', 100 - Len(MyColumn)) + MyColumn
        else MyColumn
    end

Dalam pertanyaan ini, fungsi IsNumeric digunakan untuk menentukan sama ada nilai adalah angka . Jika ya, fungsi Replicate menambah sifar pendahuluan untuk melapik rentetan ke panjang tetap (100 dalam contoh ini). Jika tidak, nilai itu dibiarkan tidak berubah.

Dengan mengisih mengikut ungkapan ini, nilai berangka akan dipadatkan dan diisih mengikut berangka, manakala nilai bukan angka akan diisih mengikut abjad. Ini memastikan susunan isihan yang diingini, seperti yang ditunjukkan dalam contoh dalam soalan asal:

1
2
10
A
B
B1

Atas ialah kandungan terperinci Bagaimana Mengisih Lajur VARCHAR dengan Nilai Angka dan Abjad Campuran Secara Numerik dalam Pelayan 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