Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Sortowanie hirarchiczne na serwerze sql, gdy identyfikator podrzędny zawiera '.'

Wypróbuj to tak:

EDYCJA:Zmieniłem podejście do radzenia sobie również z wartościami nienumerycznymi, takimi jak „123abc”.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak pobrać rekordy z ostatnich 30 minut w MS SQL?

  2. Sql Server ciąg do konwersji daty

  3. Strony kodowe i zestawienia SQL Server

  4. Aby uruchomić pakiet SSIS poza SQL Server Data Tools, musisz zainstalować Przenieś plik do archiwum usług integracji lub nowszy

  5. Jak uzyskać pierwszy rekord z każdej grupy z wyniku pobranego za pomocą polecenia group by?