一.报错信息:

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 = c1.FMATERIALID
where a.FDOCUMENTSTATUS = 'C' and d.FDOCUMENTSTATUS = 'C'
and a.FDATE >= dateadd(month,-6,Convert(varchar(7),'2023-03-23',120)+ '-01')
and a.FDATE < Convert(varchar(7),'2023-03-23',120)+ '-01'

最终结果:成功得到数据。

解决方案二:
大部分数据计算或者算数公式过于复杂,算力不足:

添加中间临时表,分担计算压力:

案例如下:

1.临时表存在则删除

if exists (select 1 from sys.objects where name = 'theNowTable') begin drop table theNowTable end

2.创建临时表数据

select * into theNowTable from (select
ROW_NUMBER() Over( Order by c1.FNUMBER) RowID,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 = c1.FMATERIALID
where a.FDOCUMENTSTATUS = 'C' and d.FDOCUMENTSTATUS = 'C' and c1.FForbidStatus = 'A' and c.FForbidStatus = 'A'
and a.FDATE >= dateadd(month,-6,Convert(varchar(7),'2023-03-23',120)+ '-01')
and a.FDATE < Convert(varchar(7),'2023-03-23',120)+ '-01'
union all
select  --简单生产入库单
ROW_NUMBER() Over( Order by c1.FNUMBER) RowID,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_SP_INSTOCK a
left join T_SP_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 = c1.FMATERIALID
where a.FDOCUMENTSTATUS = 'C' and d.FDOCUMENTSTATUS = 'C' and c1.FForbidStatus = 'A'  and c.FForbidStatus = 'A'
and a.FDATE >= dateadd(month,-6,Convert(varchar(7),'2023-03-23',120)+ '-01')
and a.FDATE < Convert(varchar(7),'2023-03-23',120)+ '-01'
union all
select  --生产退库单
ROW_NUMBER() Over( Order by c1.FNUMBER) RowID,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 * -1  FREALQTY
from T_PRD_RESTOCK a
left join T_PRD_RESTOCKENTRY 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 = c1.FMATERIALID
where a.FDOCUMENTSTATUS = 'C' and d.FDOCUMENTSTATUS = 'C' and c1.FForbidStatus = 'A'  and c.FForbidStatus = 'A'
and a.FDATE >= dateadd(month,-6,Convert(varchar(7),'2023-03-23',120)+ '-01')
and a.FDATE < Convert(varchar(7),'2023-03-23',120)+ '-01'
union all
select      --简单生产退库单
ROW_NUMBER() Over( Order by c1.FNUMBER) RowID,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) * FOUTQTY * -1  FOUTQTY
from T_SP_OUTSTOCK a
left join T_SP_OUTSTOCKENTRY 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 = c1.FMATERIALID
where a.FDOCUMENTSTATUS = 'C' and d.FDOCUMENTSTATUS = 'C' and c1.FForbidStatus = 'A'  and c.FForbidStatus = 'A'
and a.FDATE >= dateadd(month,-6,Convert(varchar(7),'2023-03-23',120)+ '-01')
and a.FDATE < Convert(varchar(7),'2023-03-23',120)+ '-01') tab

3.用临时表计算获得最终数据:

select FNUMBER,sum(FREALQTY) FREALQTY from  theNowTable group by FNUMBER
having sum(FREALQTY) >= 4200

最终结果:成功得到数据。

SqlServer Conversion failed when converting the nvarchar value ‘.‘ to data type int.相关推荐

  1. sqlserver Conversion failed when converting the nvarchar to data type int

    sqlserver Conversion failed when converting the nvarchar to data type int Union All 在两个视图做合并时报不能把某列的 ...

  2. Conversion failed when converting date and/or time from character string.

    ASP.NET MVC  EF调用SQLServer的存储过程报错. 报错信息:从字符串转换日期/时间失败. 原文如下: Conversion failed when converting date ...

  3. SQL Server报错:Arithmetic overflow error converting expression to data type int.

    一.问题描述 sql server(sql dw)查询一张表数据个数,使用count报错 select count(*) from test.test_t; 然后报错: SQL 错误 [8115] [ ...

  4. SQL Server Arithmetic overflow error converting nvarchar to data type numeric

    保存到SQL Server数据库时报错: 8115:[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Arithmetic overflow ...

  5. SQL解决Error converting data type nvarchar to numeric.

    sql查询将nvarchar字段转换成数字时, 如果nvarchar字段中包含空格,null,'',字母符号之类的非数字时, 会提示Error converting data type nvarcha ...

  6. conversion failed: could not load input document

    ###OpenOffice错误 ####报错信息 Caused by: com.artofsolving.jodconverter.openoffice.connection.OpenOfficeEx ...

  7. 关于wmsys.wm_concat() 多条记录合并,及可能出现的异常ORA-31061:XDB错误:special char to escaped char conversion failed

    在开发过程中会遇到合并记录的情况,一般使用wmsys.wm_concat()即可,例如: select zf_bh,wmsys.wm_concat(shgx) NO_SHGX from (select ...

  8. 文件和文件流——文件转码失败conversion failed: input document is null after loading

    今天文件转码碰到个文件: 文件转码的时候抛出异常(conversion failed: input document is null after loading), 从服务器当下文件查看,发现文件大小 ...

  9. rmd 转pdf error: pandoc document conversion failed with error 43

    系统环境 ubuntu 16 R 3.4.4 rstudio-server 1.1.463 rmarkdown 1.6 knitr 1.21 错误信息 Error: pandoc document c ...

最新文章

  1. python中 pip的安装方法
  2. Debian 8 直接升级到 Debian 9
  3. SAP系统权限管理及参数设置
  4. linux基于usb启动配置
  5. matlab数据游标属性设置,将节点属性添加到图论图数据提示
  6. C语言中float,double类型,在内存中的结构(存储方式).
  7. linux java jar打包_【Java】Java程序打包成jar包在Linux上运行
  8. 这个网站收集了很多杂志的审稿周期和收稿、拒稿意见,值得看看
  9. js怎么获取ueditor值_UEditor获取内容
  10. java删除相对路径文件夹_Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录...
  11. 植物学 —— 基本名词、术语及概念
  12. java的finalize方法使用
  13. [线性筛][筛素数/筛约数个数]
  14. OpenGL超级宝典(第7版)之第七章顶点处理与绘图命令
  15. mysql连接工具_连接MySQL常用工具
  16. 单片机原理与应用技术
  17. android 字体修改颜色代码,Android SearchView 修改字体颜色
  18. 论文笔记:Auto-Encoding Scene Graphs for Image Captioning
  19. 基于 TCP协议和sqlite3数据库的网络电子词典(个人项目)
  20. dw的html代码文档,Dw 基础篇:DW的文档工具栏

热门文章

  1. 基于Jenkins自动化部署spring boot项目
  2. DBSCAN聚类算法——机器学习(理论+图解+python代码)
  3. 熟练java语言-基础掌握
  4. win7计算机重名会怎样,win7系统电脑开机右下角显示“网络上有重名”的解决方法...
  5. JAVA集合的介绍及使用
  6. java 编写的mp3 2
  7. Freescale MC9S12G128 GPIO
  8. 气质的培养教程(哈佛管理世界)
  9. Call to undefined function bcmath()的解决方法
  10. 《YOLOv8改进实战专栏》专栏介绍 专栏目录