Saya memiliki kolom yang berisi data seperti ini. tanda hubung menunjukkan banyak salinan dari faktur yang sama dan ini harus diurutkan dalam urutan menaik
790711
790109-1
790109-11
790109-2
saya harus mengurutkannya dalam urutan menaik berdasarkan nomor ini tetapi karena ini adalah bidang varchar maka ia mengurutkannya berdasarkan abjad seperti ini
790109-1
790109-11
790109-2
790711
untuk memperbaikinya saya mencoba mengganti -(dash) dengan kosong dan kemudian melemparkannya sebagai nomor dan kemudian mengurutkannya
select cast(replace(invoiceid,'-','') as decimal) as invoiceSort...............order by invoiceSort asc
sementara ini lebih baik dan macamnya seperti ini
invoiceSort
790711 (790711) <-----this is wrong now as it should come later than 790109
790109-1 (7901091)
790109-2 (7901092)
790109-11 (79010911)
Seseorang menyarankan kepada saya untuk membagi id faktur pada - (tanda hubung) dan memesan berdasarkan pada 2 bagian yang terpisah
suka=====> order by split1 asc,split2 asc (790109,1)
menurut saya mana yang akan berhasil tetapi bagaimana cara membagi kolom.
Berbagai fungsi pemisahan di internet adalah fungsi yang mengembalikan tabel sementara dalam hal ini saya memerlukan fungsi skalar.
Apakah ada pendekatan lain yang bisa digunakan? Data ditampilkan dalam tampilan kisi dan tampilan kisi tidak mendukung pengurutan pada 2 kolom secara default (saya dapat menerapkannya :)) jadi jika ada pendekatan yang lebih sederhana, saya akan sangat baik.
EDIT : terima kasih atas semua jawabannya. Meskipun setiap jawaban benar, saya telah memilih jawaban yang memungkinkan saya untuk memasukkan kolom-kolom ini dalam Penyortiran GridView dengan pemfaktoran ulang minimum dari kueri sql.