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判断下,可能不会转
用ISNUMERIC判断下,可能不会转
#2
检查TEMP_TBOPEN和TEMP_TBCLOSE表的CLOSE_VALUE字段有没有非数值的值··
#3
估计是检查TEMP_TBOPEN和TEMP_TBCLOSE表的CLOSE_VALUE字段有空格或者非数值类型的不能转换为数字型的值 你可以用ISNUMERIC判断下
#4
字符数据有不能转换成数字的
#5
where ISNUMERIC(col)=1
#1
varchar to numeric
用ISNUMERIC判断下,可能不会转
用ISNUMERIC判断下,可能不会转
#2
检查TEMP_TBOPEN和TEMP_TBCLOSE表的CLOSE_VALUE字段有没有非数值的值··
#3
估计是检查TEMP_TBOPEN和TEMP_TBCLOSE表的CLOSE_VALUE字段有空格或者非数值类型的不能转换为数字型的值 你可以用ISNUMERIC判断下
#4
字符数据有不能转换成数字的
#5
where ISNUMERIC(col)=1