怎么把NVarchar转换成十进制?

pri*_*kar 0 sql sql-server

我有一个列为nvarchar(max),其值为

'1.7925e+006'
Run Code Online (Sandbox Code Playgroud)

如何将其转换为十进制?我尝试了如下

declare @pd as nvarchar(max) = '1.7925e+006'
Select convert(decimal(18, 2), @pd)
Run Code Online (Sandbox Code Playgroud)

但我得到了一个错误:

消息8114,级别16,状态5,第4
行将数据类型nvarchar转换为数值时出错。

请提出建议。

Lar*_*rnu 5

由于字符串代表浮点数,因此您需要float先将值转换为,然后转换为decimal

SELECT CONVERT(decimal(18,2),CONVERT(float,'1.7925e+006'));
Run Code Online (Sandbox Code Playgroud)