SQL查询-移动小数点

SQL查询-移动小数点,sql,sql-server,casting,rounding,Sql,Sql Server,Casting,Rounding,我有一个表,其中有一列,我需要将值格式化为一种形式 结果 1258 1248 1.18761801719666 1.1763299703598 1.21516096591949 像1258这样的值是正确的。我需要像1.18761801719666这样的值来得到类似的形式(1188),最后一个数字被四舍五入 当我使用: SELECT CAST(Results as DECIMAL(18,4)) as Results FROM [Table] 因此,我达到了预期结果的一半,但我不知道 样本数据:

我有一个表,其中有一列,我需要将值格式化为一种形式

结果

1258
1248
1.18761801719666
1.1763299703598
1.21516096591949
像1258这样的值是正确的。我需要像1.18761801719666这样的值来得到类似的形式(1188),最后一个数字被四舍五入

当我使用:

SELECT CAST(Results as DECIMAL(18,4)) as Results
FROM [Table]
因此,我达到了预期结果的一半,但我不知道

样本数据:

1258
1248
1.18761801719666
1.1763299703598
1.21516096591949
我所期望的是:

1258
1248
1187
1177
1215

1.188
1188
是不同的数字,而不仅仅是同一数字的不同格式。所以这里需要一些实际的数学运算,而不仅仅是格式化

例如,如果规则是“如果数字小于10,则将其乘以1000”,那么您可以在结果<10时编写
CASE,然后在结果*1000否则结果结束时编写

然后,您可以将其转换为整数,以丢失其余的小数位:

SELECT CAST(CASE WHEN Results < 10 THEN Results * 1000 ELSE Results END as INT)
选择CAST(如果结果<10,则结果*1000,否则结果以INT结尾)

为什么使用SQL Server格式而不是应用程序格式?请同时显示样本数据和预期结果。那么
118761
会变成什么呢<代码>1187618
<代码>00124
?分隔符没有数字意义吗?@Jeroenmoster对不起,我错了。我使用了
分隔符而不是
十进制分隔符。我更新了我的问题。