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!