SqlServer Conversion failed when converting the nvarchar value ‘.‘ to data type int.
一.报错信息:
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.相关推荐
- sqlserver Conversion failed when converting the nvarchar to data type int
sqlserver Conversion failed when converting the nvarchar to data type int Union All 在两个视图做合并时报不能把某列的 ...
- Conversion failed when converting date and/or time from character string.
ASP.NET MVC EF调用SQLServer的存储过程报错. 报错信息:从字符串转换日期/时间失败. 原文如下: Conversion failed when converting date ...
- SQL Server报错:Arithmetic overflow error converting expression to data type int.
一.问题描述 sql server(sql dw)查询一张表数据个数,使用count报错 select count(*) from test.test_t; 然后报错: SQL 错误 [8115] [ ...
- 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 ...
- SQL解决Error converting data type nvarchar to numeric.
sql查询将nvarchar字段转换成数字时, 如果nvarchar字段中包含空格,null,'',字母符号之类的非数字时, 会提示Error converting data type nvarcha ...
- conversion failed: could not load input document
###OpenOffice错误 ####报错信息 Caused by: com.artofsolving.jodconverter.openoffice.connection.OpenOfficeEx ...
- 关于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 ...
- 文件和文件流——文件转码失败conversion failed: input document is null after loading
今天文件转码碰到个文件: 文件转码的时候抛出异常(conversion failed: input document is null after loading), 从服务器当下文件查看,发现文件大小 ...
- 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 ...
最新文章
- python中 pip的安装方法
- Debian 8 直接升级到 Debian 9
- SAP系统权限管理及参数设置
- linux基于usb启动配置
- matlab数据游标属性设置,将节点属性添加到图论图数据提示
- C语言中float,double类型,在内存中的结构(存储方式).
- linux java jar打包_【Java】Java程序打包成jar包在Linux上运行
- 这个网站收集了很多杂志的审稿周期和收稿、拒稿意见,值得看看
- js怎么获取ueditor值_UEditor获取内容
- java删除相对路径文件夹_Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录...
- 植物学 —— 基本名词、术语及概念
- java的finalize方法使用
- [线性筛][筛素数/筛约数个数]
- OpenGL超级宝典(第7版)之第七章顶点处理与绘图命令
- mysql连接工具_连接MySQL常用工具
- 单片机原理与应用技术
- android 字体修改颜色代码,Android SearchView 修改字体颜色
- 论文笔记:Auto-Encoding Scene Graphs for Image Captioning
- 基于 TCP协议和sqlite3数据库的网络电子词典(个人项目)
- dw的html代码文档,Dw 基础篇:DW的文档工具栏
热门文章
- 基于Jenkins自动化部署spring boot项目
- DBSCAN聚类算法——机器学习(理论+图解+python代码)
- 熟练java语言-基础掌握
- win7计算机重名会怎样,win7系统电脑开机右下角显示“网络上有重名”的解决方法...
- JAVA集合的介绍及使用
- java 编写的mp3 2
- Freescale MC9S12G128 GPIO
- 气质的培养教程(哈佛管理世界)
- Call to undefined function bcmath()的解决方法
- 《YOLOv8改进实战专栏》专栏介绍 专栏目录