如果说你的数据库字段是varchar,但是存储的数据是数值,在出报表时需要转成int或numeric时,无论怎么样都报错。
错误信息:
消息 8114,级别 16,状态 5,第 1 行
从数据类型 varchar 转换为 numeric 时出错。
解决方法:
可以在条件中,加一句:isnumeric(字段)=1
如果说你的数据库字段是varchar,但是存储的数据是数值,在出报表时需要转成int或numeric时,无论怎么样都报错。
错误信息:
消息 8114,级别 16,状态 5,第 1 行 从数据类型 varchar 转换为 numeric 时出错。
解决方法:
可以在条件中,加一句:isnumeric(字段)=1
转载于:https://www.cnblogs.com/Anders888/p/10450003.html
从数据类型 varchar 转换为 numeric 时出错的查找办法
总结原因有以下几点:
1、有null值;
2、有“”值;ISNUMERIC
确定表达式是否为一个有效的数字类型。下面这几个值,用sql函数ISNUMERIC()用查不出来错误
1、有“-”值;2、财务上用的逗号,有“,”值
把以上转为0,基本上差不多就可以了其他:转小数值一般不要超过5位
纠结了好几天了,就是不停的报错,网上说什么有ab什么字符在里面,我百般查找,各种报错
最后才发现有一个误区,就是你insert的时候存进去的''不会变成null,只是空值,空值和null是不一样的。
当你往里面存''的时候,他就会报错···
如果想要存入null值,就得是name = NULL 不是name = 'NULL' 也不是name = ''
出现这种问题的情况下,首先,你肯定进行了数据的转换,不管是convert还是cast 一定是用了其中的一种方式,其次,如果转换前的数据中含有非数字字符,例如abc >;%特殊字符,你心里也有数,这个转换肯定是不行的,而我出现这个问题的时候比较特殊,这个字段本应该是纯数字,数据量不多,大概3000+条数据,但是其中有一条数据是有问题的,所以在转换成数字的时候出错了
这个字段在录入的时候没有对字段进行控制,因为这个温度存在录入1980/1978的情况,是通过差分斜杠获取第一个字段进行的选取,但是还有少见的这种输入错误的情况可能会出现,所以在convert转换时报错应对方法:1、如果害怕会有问题 对转换字段先进行ltrim () rtrim()的操作
2、使用isnumeric()操作,对返回值为0的数据进行筛选(ISNUMERIC函数返回值为0则代表不是纯数字,不为0代表纯数字)看下是什么问题把他去掉
3、在SQL语句中直接添加where 语句,将非纯数字的数据给筛出