如何将包含科学记数法中的数字的varchar转换为SQL Server中的数字?

时间:2017-05-02 10:58:39

标签: sql-server sql-server-2012 type-conversion numeric varchar

我使用函数进行了一些计算并得到以下值。我想将此值除以1000。

1.83673e+006

我想将值转换为数字。

当我尝试将其转换为数字时,它会抛出

  

将数据类型nvarchar转换为数字时出错。

是否可以将此值转换为数字?请帮我搞定。

提前致谢

3 个答案:

答案 0 :(得分:3)

试试吧

# ==> Configuration for :timeoutable
# The time you want to timeout the user session without activity. After this
# time the user will be asked for credentials again. Default is 30 minutes.
config.timeout_in = 90.minutes

答案 1 :(得分:1)

在SQL Server中,科学记数法(...+e...)仅用于浮点数据类型,而不用于十进制/数字数据类型。

因此,SQL Server仅在转换为浮点数据类型(例如floatreal)时才识别此格式,而不是在直接转换为numeric时识别此格式。

显然,没有什么可以阻止您先将值转换为float然后转换为numeric

SELECT CONVERT(numeric(19,4), CONVERT(float, '1.83673e+006'))

收益1836730.0000

答案 2 :(得分:0)

试试这个

Declare @data varchar(100)='1.83673e+006'
SELECT @data=CAST(CAST( @data AS float) AS NUMERIC)/1000
SELECT @data Result


Result
1836.730000