我正在尝试使用以下查询仅获取指数值2.34534563633563E + 15。但是它显示了所有下面的值,这是错误的。
例如:
SELECT [value] AS FloatValue
FROM #InvalidData
WHERE [Value] like '%E+%'
结果: FloatValues
2.34534563633563E+15
3452345
23453456363
34534564
请让我知道如何仅获取(第一个)指数值。
答案 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