Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Penyortiran hierarkis di server sql ketika id anak berisi '.'

Cobalah seperti ini:

EDIT:Saya mengubah pendekatan untuk menangani nilai non-numerik seperti '123abc' juga.

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. Bagaimana cara mengimpor file .bak SQL Server ke MySQL?

  2. Indeks berbasis fungsi di SQL Server

  3. Permintaan rekursif SQL Server

  4. Dapatkan Zona Waktu Saat Ini dari Server di SQL Server (T-SQL)

  5. Perulangan T-SQL melalui kolom data XML untuk mendapatkan kumpulan jalur yang unik