sql >> Databasteknik >  >> RDS >> Sqlserver

Hirarkisk sortering i sql-server när barn-id innehåller '.'

Prova så här:

EDIT:Jag ändrade metoden för att hantera icke-numeriska värden som '123abc' också.

declare @ids table(idList varchar(100))
insert into @ids values
 ('1.1')
,('1.2')
,('2.8')
,('2.7')
,('6.5')
,('6.5.1')
,('6.5.15')
,('7.1')
,('8');

select idList,padded.OrderBy
from @ids as ids
cross apply(select cast('<r>' + replace(idList,'.','</r><r>') + '</r>' as xml)) as AsXml(val)
cross apply
(
    select right('                ' + rtrim(x.y.value('.','varchar(max)')),10) 
    from AsXml.val.nodes('/r') as x(y)
    for xml path('')
) as padded(OrderBy)
order by padded.OrderBy


  1. Hur man beräknar flera glidande medelvärden i MySQL

  2. Hur man subtraherar timmar från ett Datetime-värde i MariaDB

  3. Hur man får en lista över primärnyckelbegränsningar från alla databaser på SQL Server Instance - SQL Server / TSQL Tutorial Del 60

  4. Inaktiv session i Oracle av JDBC