一.报错信息:
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