我正在尝试将nvarchar
转换为decimal (18,2)
,我收到以下消息:
Msg 8115,Level 16,State 6,Line 2
将nvarchar转换为数据类型numeric的算术溢出错误。
CAST是:CAST(bm_onnet AS decimal(18,2)) as bm_onnet_corr
,
它仅在值最多只有3位小数时起作用,对下面的值不起作用:
21.8333333333333333333333333333333333333
我该如何修改我的SELECT?
答案 0 :(得分:7)
使用圆函数
例如
declare @v nvarchar(100) = '21.8333333333333333333333333333333333333'
select convert(decimal(18,2),round(@v,2))
选择看起来像这样
SELECT CAST(round(bm_onnet,2) AS decimal(18,2)) as bm_onnet_corr
答案 1 :(得分:0)
select
case when charindex('.',bm_onnet)) > = 2 then
convert(decimal(18,2),substring(bm_onnet,0,charindex('.',bm_onnet)+3))
else
convert(decimal(18,2),bm_onnet)
end
早上太早使用它。