sql >> Base de Datos >  >> RDS >> Sqlserver

Ordenar correctamente los números con puntos almacenados como caracteres en SQL Server

Si tiene SQL 2008, puede usar el nuevo tipo de datos de ID de jerarquía:

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 + '/');