Mengisih Lajur VARCHAR dengan Nilai Abjad Angka Campuran dalam Pelayan SQL
Jadual pangkalan data mungkin mengandungi lajur VARCHAR yang boleh menyimpan gabungan huruf dan nombor. Apabila mengisih lajur ini, selalunya wajar untuk memisahkan nilai berangka dan mengisihnya secara semula jadi, sambil mengekalkan susunan abjad untuk medan bukan angka.
Masalah:
Bagaimana boleh anda mengisih lajur VARCHAR yang mengandungi kedua-dua huruf dan nombor dalam SQL Server supaya nombor diisih mengikut berangka dan huruf diisih mengikut abjad?
Penyelesaian:
Untuk mencapai ini, anda boleh menggunakan kaedah yang menggabungkan fungsi IsNumeric dan fungsi Replika. Fungsi IsNumeric menyemak sama ada rentetan ialah angka, manakala fungsi Replika menambah bilangan aksara yang ditentukan pada permulaan rentetan.
Berikut ialah contoh pertanyaan:
SELECT MyColumn FROM MyTable ORDER BY CASE IsNumeric(MyColumn) WHEN 1 THEN Replicate('0', 100 - Len(MyColumn)) + MyColumn ELSE MyColumn END
Dalam pertanyaan ini , ungkapan CASE menyemak sama ada nilai dalam lajur MyColumn ialah angka. Jika ya, fungsi Replika menambah bilangan sifar pendahuluan yang mencukupi pada rentetan supaya semua nilai berangka mempunyai panjang yang sama (100 dalam contoh ini). Ini memastikan bahawa ia diisih mengikut berangka.
Untuk nilai bukan angka, klausa ELSE hanya mengembalikan nilai asal, mengekalkan susunan abjad.
Laraskan nilai 100 dalam fungsi Replika berdasarkan pada panjang maksimum nilai angka dalam lajur.
Atas ialah kandungan terperinci Bagaimana untuk Mengisih Lajur VARCHAR dengan Nilai Abjad Angka Campuran Secara Semulajadi dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!