Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Classificando corretamente os números pontilhados armazenados como caractere no SQL Server


Se você tiver o SQL 2008, poderá usar o novo tipo de dados hierarchyid:
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 + '/');