我有一个 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
3条答案
按热度按时间sxissh061#
使用
try_cast()
. 我建议:b4lqfgs42#
您有十进制值,所以应该将它们转换为
decimal
(或numeric
例如)而不是int
.这应该是你想要的:
您可能需要根据实际用例调整数据类型的大小和精度。
如果某些值不能转换为十进制,也可以使用
try_cast()
为避免转换错误:2skhul333#
你可以用
CAST
函数将nvarchar数据类型转换为order by子句中的decimal。主要查询: