数据转换时报错:Error converting data type varchar to numeric.

时间:2022-08-18 16:37:27
请教一个问题,运行以下T-sql报错

insert into TBL_JETCF02 
([COCODE],[GLCODE],[GLDESC],[S_CURR],[OPENSYSVALUE],[CLOSESYSVALUE])
select '001',A.GLCODE,A.GLDESC,'RMB',convert(decimal(15,2),case when(A.CLOSE_VALUE = '' or A.CLOSE_VALUE is null) then '0.00' else A.CLOSE_VALUE end),convert(decimal(15,2),case when(B.CLOSE_VALUE = '' or B.CLOSE_VALUE is null) then '0.00' else B.CLOSE_VALUE end)
from TEMP_TBOPEN A
left join TEMP_TBCLOSE B
on A.GLCODE = B.GLCODE 
where A.GLCODE is not null and A.GLCODE <> ''

其中各个表的数据结构
Create table TEMP_TBOPEN
(
 [GLCODE]       varchar(100), 
 [GLDESC]       varchar(400),
 [OPEN_VALUE]   varchar(100),
 [DEBIT_VALUE]  varchar(100),
 [CREDIT_VALUE] varchar(100),
 [CLOSE_VALUE]  varchar(100),
)  

Create table TEMP_TBCLOSE
(
 [GLCODE]       varchar(100), 
 [GLDESC]       varchar(400),
 [OPEN_VALUE]   varchar(100),
 [DEBIT_VALUE]  varchar(100),
 [CREDIT_VALUE] varchar(100),
 [CLOSE_VALUE]  varchar(100),
)  

TBL_JETCF02 中[OPENSYSVALUE],[CLOSESYSVALUE]是numeric(18,2)其余都是char

运行报错
Msg 8114, Level 16, State 5, Line 2
Error converting data type varchar to numeric.
是怎么回事阿

谢谢


来源: http://www.programbbs.com/bbs/view25-25248-1.htm

5 个解决方案

#1


 varchar to numeric
用ISNUMERIC判断下,可能不会转

#2


检查TEMP_TBOPEN和TEMP_TBCLOSE表的CLOSE_VALUE字段有没有非数值的值··

#3


估计是检查TEMP_TBOPEN和TEMP_TBCLOSE表的CLOSE_VALUE字段有空格或者非数值类型的不能转换为数字型的值  你可以用ISNUMERIC判断下

#4


字符数据有不能转换成数字的

#5


引用 1 楼 sql77 的回复:
varchar to numeric
用ISNUMERIC判断下,可能不会转

where ISNUMERIC(col)=1

#1


 varchar to numeric
用ISNUMERIC判断下,可能不会转

#2


检查TEMP_TBOPEN和TEMP_TBCLOSE表的CLOSE_VALUE字段有没有非数值的值··

#3


估计是检查TEMP_TBOPEN和TEMP_TBCLOSE表的CLOSE_VALUE字段有空格或者非数值类型的不能转换为数字型的值  你可以用ISNUMERIC判断下

#4


字符数据有不能转换成数字的

#5


引用 1 楼 sql77 的回复:
varchar to numeric
用ISNUMERIC判断下,可能不会转

where ISNUMERIC(col)=1