将nvarchar转换为十进制t-sql的问题

Dan*_*nov 4 t-sql casting

我正在尝试转换nvarchar为,decimal (18,2)并且我收到以下消息:

消息8115,级别16,状态6,行2
算术溢出错误将nvarchar转换为数据类型numeric.

CAST是:CAST(bm_onnet AS decimal(18,2)) as bm_onnet_corr,仅当值只有最多3位小数时才起作用,对下面的值不起作用:

21.8333333333333333333333333333333333333
Run Code Online (Sandbox Code Playgroud)

我该如何修改我的SELECT?

SQL*_*ace 7

使用圆形功能

declare @v nvarchar(100) = '21.8333333333333333333333333333333333333'

select convert(decimal(18,2),round(@v,2))
Run Code Online (Sandbox Code Playgroud)

选择看起来像这样

SELECT CAST(round(bm_onnet,2) AS decimal(18,2)) as bm_onnet_corr
Run Code Online (Sandbox Code Playgroud)