首页 > 解决方案 > SQL Server在转换为CHAR时截断浮点字段中的整数值

问题描述

我有一个相当奇怪的问题。

由于在大型查询中从FLOAT和两列中获取一列,CHAR我将结果FLOAT转换为,CHAR以便生成的查询的数据类型匹配。

对于列中的少数整数值,将FLOAT整数截断为科学计数法,即丢失一个整数。

例子

DECLARE @fl FLOAT
SET @fl = 1041931

SELECT CAST(ISNULL(@fl, '0') AS VARCHAR(20))

这是显示

1.04193+e006

扩展时为 1041930,因此丢失了最后一位。

正确显示整数我做错了什么?带有小数的 FLOATS 不会发生这种情况。

标签: sql-servercastingfloating-pointrounding

解决方案


您可以尝试以下查询。

DECLARE @fl FLOAT
SET @fl = 1041931
SELECT CAST(CAST(ISNULL(@fl, '0') AS DECIMAL(10,0)) AS VARCHAR(10)) 

推荐阅读