Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sắp xếp phân cấp trong máy chủ sql khi id con chứa '.'

Hãy thử nó như thế này:

CHỈNH SỬA:Tôi cũng đã thay đổi cách tiếp cận để xử lý các giá trị không phải số như '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. Tại sao CTE (Biểu thức bảng chung) trong một số trường hợp làm chậm các truy vấn so với bảng tạm thời trong SQL Server

  2. SQL Server Management Studio (SSMS)

  3. SQL Server - sys.functions ở đâu?

  4. Cách chèn hàng trong Bảng SQL Server bằng cách chỉnh sửa GUI hàng bảng - Hướng dẫn SQL Server / TSQL Phần 101

  5. sử dụng pyodbc trên linux để chèn các ký tự unicode hoặc utf-8 vào trường nvarchar mssql