You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将NVarchar转换为Decimal?科学计数法格式值转换求助

解决方案:科学计数法字符串转Decimal类型

你遇到的问题很典型——SQL Server的CONVERT函数没办法直接解析科学计数法格式的字符串来转换为decimal类型,得通过一个中间类型过渡才行。

直接用CONVERT(decimal(18, 2), @pd)报错,核心原因是decimal类型的转换逻辑不识别1.7925e+006这种科学计数法格式的字符串。我们可以先把字符串转成float类型(float天然支持解析科学计数法),再转成decimal:

declare @pd as nvarchar(max) = '1.7925e+006'
SELECT CONVERT(decimal(18, 2), CONVERT(float, @pd))

执行这段代码后,会得到结果1792500.00,完全符合你的需求。

额外建议:容错处理

如果你的列里可能存在格式不合法的字符串(比如非科学计数法的无效数字),可以用TRY_CONVERT替代CONVERT,这样转换失败时不会抛出错误,而是返回NULL,让查询更健壮:

declare @pd as nvarchar(max) = '1.7925e+006'
SELECT TRY_CONVERT(decimal(18, 2), TRY_CONVERT(float, @pd))

需要注意的是:float类型是近似数值类型,对于特别大或者小数位极多的数值,可能存在轻微的精度损失。如果你的业务场景对精度要求极高,可能需要考虑自定义函数来手动解析科学计数法字符串,但对于大多数常规场景,上面的方法已经足够好用了。

内容的提问来源于stack exchange,提问作者priyanka.sarkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:56:26