错误:在将 varchar 值 ‘12834.13’ 转换成数据类型 int 时失败
发生情况:
单独插入一行数据时提示这个错误。
批量插入数据时出现这个错误提示。
原因:
一般是由于,列类型错误,比如定义的列类型为 int, 但是插入数据时插入的是像 ‘12834.13’ 的字符串或带小数的值。
这个比较特殊,因为你会发现比如自己定义的列类型为 numeric(或 decimal),并且是有小数位两位的,但是就是插入不进去,一直提示数据转成 int 时出错。这个的原因是由于类似以下的写法导致的:
假设有表 A,字段 x,类型为 numeric(19,2)
语句如下:
|
|
错误原因出来了:SqlServer 在进行批量插入时,会将所有没一行的数据,按照列进行全部转成统一的数值类型,很不幸的是,在上面的语句处理中,第三条它会把 ‘152.52’ 这个类 varchar 的转成跟后面 0 一致的 int,所以就报错了。
解决方案:
该错误比较容易解决:只要将列类型写对就行。
该错误建议解决方案为:将所有插入的值全部 string 化,即不管数值是 0 还是 11.02 还是 11 全部写成 ‘0’, ‘11.02’, ‘11’
解决语句:
|
|
- 本文作者: kriss
- 本文链接: http://www.kriss.pub/2017/12/13/sqlserver-error/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!
