Sql-Abfrage, um Zahlen zu sortieren und die Ausgabe als 1.1.1.1.1.1.1.1.3 zu erhalten

Ich möchte, dass SQL-Abfrage ausgegeben wird

1.1.1,1.1.2,1.1.3...

Ich versuchte Ordnung durch Klausel, aber ich 1.1.1,1.1.10,1.1.11,1.1.2,1.1.3... Ergebnis als 1.1.1,1.1.10,1.1.11,1.1.2,1.1.3...

Mein Verfahren ist:

 select * from Projects, where iId in (select value from ParmsToList(@projectid,',') ) And Projects.categoryid > 0 order by Projects.vProjectName 

Ein path ist, um sie wie Hierarchieknoten aussehen zu lassen

 ;with t(f) as ( select '1.1.1' union select '1.1.10' union select '1.1.11' union select '1.1.2' union select '1.1.3' ) select * from t order by cast('/' + replace(f, '.', '/') + '/' as hierarchyid) 

zum

 f 1.1.1 1.1.2 1.1.3 1.1.10 1.1.11 

SQL server 2008+:

 select tv from (values ('1.1.1'), ('1.1.10'), ('1.1.11'), ('1.1.2'), ('1.1.3'), ('1.2.1'), ('10.1.1')) as t(v) cross apply ( select x = cast('<i>' + replace(v, '.', '</i><i>') + '</i>' as xml) ) x order by x.value('i[1]','int'),x.value('i[2]','int'), x.value('i[3]','int') 

SQL server 2005+:

 ;with t(v) as ( select '1.1.1' union all select '1.1.10' union all select '1.1.11' union all select '1.1.2' union all select '1.1.3' union all select '1.2.1' union all select '10.1.1' ) select tv from t cross apply ( select x = cast('<i>' + replace(v, '.', '</i><i>') + '</i>' as xml) ) x order by x.value('i[1]','int'),x.value('i[2]','int'), x.value('i[3]','int') 

Ausgabe:

 v ------ 1.1.1 1.1.2 1.1.3 1.1.10 1.1.11 1.2.1 10.1.1