如何将指数值转换为给定的float数据类型值

时间:2018-12-21 07:28:08

标签: sql sql-server

我正在尝试使用以下查询仅获取指数值2.34534563633563E + 15。但是它显示了所有下面的值,这是错误的。

例如:

SELECT [value] AS FloatValue
FROM #InvalidData
WHERE [Value]  like  '%E+%'

结果:     FloatValues

2.34534563633563E+15
3452345
23453456363
34534564

请让我知道如何仅获取(第一个)指数值。

3 个答案:

答案 0 :(得分:1)

如@jarlh所评论,一种解决方案是两次CAST:首先是INTEGER,然后是CHAR

SELECT 2.34534563633563E+15, CAST(CAST(2.34534563633563E+15 AS SIGNED) AS CHAR);

收益:

2.34534563633563e15 2345345636335630

答案 1 :(得分:0)

尝试使用

  

STR(数字,长度,小数)

其中 数字为必填项。要转换为字符串的数字, 长度是可选的。返回字符串的长度。默认值为10, 小数是可选的。要在返回字符串中显示的小数位数。默认值为0

SELECT STR(2.34534563633563E+15, 20, 3) 结果将是:2345345636335630.000

答案 2 :(得分:0)

您似乎想获取值表示形式,因为字符串包含“ E”。如果是这样,尽管我更喜欢显式强制转换,但是您的代码实际上应该基于 default 表示形式工作:

SELECT [value] AS FloatValue
FROM #InvalidData
WHERE CAST(Value AS VARCHAR(255)) LIKE '%E+%';

这不起作用,因为您没有使用默认表示形式。

相反,只需使用数字比较:

where value >= 100000000000