Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ordinamento corretto dei numeri tratteggiati archiviati come caratteri in SQL Server

Se disponi di SQL 2008 puoi utilizzare il nuovo tipo di dati Gerarchiaid:

WITH Items (ItemNumber) AS (
    SELECT '1' UNION ALL SELECT '1.1' UNION ALL SELECT '1.1.1'
    UNION ALL SELECT '10' UNION ALL SELECT '11' UNION ALL SELECT '2'
    UNION ALL SELECT '2.1' UNION ALL SELECT '20' UNION ALL SELECT '3'
    UNION ALL SELECT '30'
)
SELECT *
FROM Items 
ORDER BY Convert(hierarchyid, '/' + ItemNumber + '/');