NVARCHAR(50)上的功能不足,它保存数字但格式不同

时间:2017-02-24 16:54:32

标签: sql sql-server

我有一个列中包含许多不同类型的数字,当我在其上执行少于函数时,它似乎无法正常工作。

0 
0.000000 
-0.001000 
0.738000 
1.000000 
10.000000 
10.005000 
10.027000 
... 
99.947000 
99.962000 
99.988000 
990.307000 
991.190000 
9918.058000 
996 
997 

这是数字的样本吗?

1 个答案:

答案 0 :(得分:8)

字符串比较与数字比较不同。

如果您想比较这些数字,我建议您将它们转换为decimalfloat

where try_convert(float, col) < 10

当然,我应该提到不建议在字符字段中存储数字。如果可能,您应该使用本机类型。

编辑:

在SQL Server 2012之前的版本中,您应该使用case

where (case when isnumeric(col) = 1 then convert(float, col)
       end) < 10