Zeichenfolge als Nummer im SQL Server sortieren

Ich habe eine Spalte, die solche Daten enthält. Striche kennzeichnen mehrere Exemplare derselben Rechnung und müssen in aufsteigender Reihenfolge sortiert werden

790711
790109-1
790109-11
790109-2

Ich muss es in aufsteigender Reihenfolge nach dieser Nummer sortieren, aber da dies ein Varchar-Feld ist, wird es in alphabetischer Reihenfolge wie folgt sortiert

790109-1
790109-11
790109-2
790711

Um dies zu beheben, habe ich versucht, das - (Bindestrich) durch ein leeres zu ersetzen und es dann als Zahl auszugeben und danach zu sortieren

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

während dies besser ist und so aussieht

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

Jemand schlug mir vor, die Rechnungs-ID auf dem - (Bindestrich) aufzuteilen und nach den 2 aufgeteilten Teilen zu bestellen

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

Was würde funktionieren, denke ich, aber wie würde ich die Spalte teilen.

Die verschiedenen Split-Funktionen im Internet sind diejenigen, die eine Tabelle zurückgeben, während ich in diesem Fall eine Skalarfunktion benötigen würde.

Gibt es andere Ansätze, die verwendet werden können? Die Daten werden in der Rasteransicht angezeigt und die Sortierung nach 2 Spalten wird standardmäßig nicht unterstützt (ich kann sie jedoch implementieren :)). Wenn es also einfachere Ansätze gibt, wäre ich sehr nett.

BEARBEITEN : danke für alle antworten. Obwohl jede Antwort richtig ist, habe ich die Antwort ausgewählt, die es mir ermöglicht, diese Spalten in die GridView-Sortierung mit minimaler Umrechnung der SQL-Abfragen einzubeziehen.

Antworten auf die Frage(9)

Ihre Antwort auf die Frage