SqlServer Conversion failed when converting the nvarchar value ‘.‘ to data type int.

文章介绍了在处理数据时遇到的转换错误,即尝试将nvarchar值转换为int类型失败。这个问题可能是由于字段数据不兼容或数据库计算能力限制导致。为了解决这类问题,提出了两种解决方案:一是针对小量数据,通过添加自定义字段并进行字段截取和计算来避免转换错误;二是对于大量数据或复杂计算,创建中间临时表分摊计算压力,先存储预处理结果,然后进行后续计算。这两种方法都成功地解决了数据处理中的挑战。
摘要由CSDN通过智能技术生成

一.报错信息:

Conversion failed when converting the nvarchar value ‘.’ to data type int.

翻译:转换nvarchar值“”时转换失败到数据类型int。

二.报错原因:

1.字段取数确实有问题,无法进行强制转换。
2.数据库算力不足,直接报错。
(我们下面细说2的解决方案)

三.解决方案:

解决方案一:
小部分数据(我碰到的是30w数据,字段截取后得到数字进行计算),算力不足:

添加自定义字段,Row_Number() Over(Order by 字段) FROWID
案例如下:

select 
ROW_NUMBER() Over( Order by c1.FNUMBER) FRowID,
c1.FNUMBER
,(case when c.F_add_Text222 ='' then 1 else (convert(int,(substring(c.F_add_Text,0,CHARINDEX('*',c.F_add_Text))))*convert(int,( substring(c.F_add_Text,CHARINDEX('*',c.F_add_Text)+1,len(c.F_add_Text ))))*0.000001)/( convert(int,(substring(c.F_add_Text222,0,CHARINDEX('*',c.F_add_Text222))))*convert(int,( substring(c.F_add_Text222,CHARINDEX('*',c.F_add_Text222)+1,len(c.F_add_Text222 ))))*0.000001) end) * FREALQTY FREALQTY
from T_PRD_INSTOCK a
left join T_PRD_INSTOCKENTRY b on a.FID = b.FID
left join T_BD_MATERIAL c on b.FMATERIALID = c.FMATERIALID
left join T_ENG_BOM d on c.FMATERIALID = d.FMATERIALID
left join T_ENG_BOMCHILD e on d.FID = e.FID
left join T_BD_MATERIAL c1 on e.FMATERIALID = c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值