【问题标题】:SQL Server truncating values of a whole number in a float field when cast to CHARSQL Server在转换为CHAR时截断浮点字段中的整数值
【发布时间】:2019-07-20 17:29:24
【问题描述】:

我有一个很奇怪的问题。

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

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

例子

DECLARE @fl FLOAT
SET @fl = 1041931

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

这是显示

1.04193+e006

展开后是 1041930,因此丢失了最后一位。

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

【问题讨论】:

标签: sql-server casting floating-point rounding


【解决方案1】:

您可以尝试以下查询。

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

【讨论】:

  • 当我有 4 位小数而同一字段中没有小数时,这太难处理了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 2021-07-16
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多