【发布时间】:2019-07-20 17:29:24
【问题描述】:
我有一个很奇怪的问题。
由于在大型查询中从 FLOAT 和 CHAR 列中获取一列,因此我将生成的 FLOAT 转换为 CHAR,以便生成的查询的数据类型匹配。
对于FLOAT 列中的少数整数值,它会将整数截断为科学计数法,即丢失一个整数。
例子
DECLARE @fl FLOAT
SET @fl = 1041931
SELECT CAST(ISNULL(@fl, '0') AS VARCHAR(20))
这是显示
1.04193+e006
展开后是 1041930,因此丢失了最后一位。
正确显示整数我做错了什么?带有小数的 FLOATS 不会发生这种情况。
【问题讨论】:
-
很奇怪,我不知道答案,但可能的解决方案是使用
str,例如STR(ISNULL(@fl, '0.0'), 25, 0) -
这确实有效,奇怪的是。它填充了空间,但也许我可以使用 LEN 只占用填充的 FLOAT 空间。
标签: sql-server casting floating-point rounding