首页 > 解决方案 > 在 nvarchar 中按数字排序

问题描述

我有一个nvarchar列,我试图在以下查询中排序:

select youngestage
from table1 
ORDER BY
    CASE WHEN ISNUMERIC(youngestage) = 1 THEN 0 ELSE 1 END
    , CASE WHEN ISNUMERIC(youngestage) = 1 THEN CAST(youngestage AS INT) ELSE 0 END
    , youngestage

结果

 0
 1
 1.5
 10
 11
 12
 14
 2
 3

将 nvarchar 值“1.5”转换为数据类型 int 时转换失败。

我怎么能这样订购

YoungestAge
 0
 1
 1.5
 2
 3
10
11
12
14

标签: sqlsql-servertsqlselectsql-order-by

解决方案


使用try_cast(). 我会推荐:

ORDER BY TRY_CONVERT(numeric(20, 1), youngestage) 

推荐阅读