Сортировать строку как число в SQL Server

У меня есть столбец, который содержит такие данные. тире указывают на несколько копий одного и того же счета, и они должны быть отсортированы в порядке возрастания

790711
790109-1
790109-11
790109-2

Я должен отсортировать его в порядке возрастания по этому числу, но так как это поле varchar, он сортирует в алфавитном порядке, как это

790109-1
790109-11
790109-2
790711

чтобы исправить это, я попытался заменить - (тире) на пустой, а затем привести его в число и затем отсортировать

select cast(replace(invoiceid,'-','') as decimal) as invoiceSort...............order by invoiceSort asc

в то время как это лучше и вроде как

            invoiceSort
790711      (790711)   <-----this is wrong now as it should come later than 790109
790109-1    (7901091)
790109-2    (7901092)
790109-11   (79010911)

Кто-то предложил мне разделить идентификатор счета на - (тире) и упорядочить по 2 разделенным частям

как =====>order by split1 asc,split2 asc (790109,1)

я думаю, что это сработало бы, но как бы я разбил колонку?

Различные функции разделения в Интернете - это те, которые возвращают таблицу, в то время как в этом случае мне потребовалась бы скалярная функция.

Есть ли другие подходы, которые можно использовать? Данные отображаются в виде сетки, а сетка не поддерживает сортировку по 2 столбцам по умолчанию (хотя я могу реализовать это :)), поэтому, если есть более простые подходы, мне было бы очень приятно.

РЕДАКТИРОВАТЬ : Спасибо за ответы на все вопросы. В то время как каждый ответ правильный, я выбрал ответ, который позволил мне включить эти столбцы в сортировку GridView с минимальным перефакторингом SQL-запросов.

Ответы на вопрос(9)

Ваш ответ на вопрос