今天接触到一个很有意思的问题。当我在执行一条INSERT的sql语句时,他总是报字符串转数字类型失败。

问题
首先,该表中的所有数字类型的字段都是非必填,其次,每个数字类型的字段都有默认值。最令我感到疑惑的是,当我测试不加入那些必填字段做INSERT时,数据库仍然报这个错误,这就让我有点摸不着头脑了,因为我的经验是当你新增数据而没有添加必填字段一起时(这些字段没有默认值),数据库肯定是会报这个错误,而且当SQL中存在其他错误时,也是优先报出这种错误。所以今天这个错误让我感到很疑惑。

虽然很疑惑这个报错的情况不符合自己以往的经验,但还是打算循着这个错误描述去对每个字段作检查。

调试
首先,将INSERT语句中的非数字类型的字段及其值删除,执行后,发现还是会报一样的错误,而且提供的所有的值都是数字。接着,查看表中有哪些数字类型的字段,然后再查看INSERT语句中缺少了哪个,终于发现一个数字类型的字段不存在于INSERT中,于是添加这个字段做测试,果不其然,语句成功执行。到这里,基本上能猜测到导致该问题的原因了,也即,当我没有添加该字段做新增时,语句失败,添加后,语句成功,那么很明显,是该字段的默认值有问题(因为数字类型的字段在不做处理的情况下,是不可以保存空值的)。经过检查,该字段的默认值是一个空字符串''。解决方法很简单,修改其默认值为0即可。

总结
此次遇到的这个问题,并不复杂,使得自己愿意写一篇文章的原因主要是自己的经验欺骗了自己。特别是在不添加必填字段执行语句时,报的错误居然不是符合自己经验的情况,这让自己走进了误区。后面,自己将会去深入的研究一下,SQL报错时,是基于什么优先级来处理的。

一次特殊的“VARCHAR转numeric失败”错误记录的更多相关文章

  1. sql 关于查询时 出现的 从数据类型 varchar 转换为 numeric 时出错 的解决方法。

    出现这种问题 一般是查询时出现了 varchar 转 numeric 时出了错  或varchar字段运算造成的 解决方法: 让不能转的数不转换就可以了 sql的函数有个isNumeric(参数) 用 ...

  2. 从数据类型 varchar 转换为 numeric 时出错.

    如果说你的数据库字段是varchar,但是存储的数据是数值,在出报表时需要转成int或numeric时,无论怎么样都报错. 错误信息: 消息 8114,级别 16,状态 5,第 1 行 从数据类型 v ...

  3. sql server<> != 从数据类型varchar转换为numeric 时出错

    sql server 数据类型转换出错 字段percentcomplete 是 varchar 类型, 都是存的数字 用 where cast(percentcomplete as numeric(1 ...

  4. 烂泥:【解决】virtualbox启动报创建COM对象失败错误

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 今天在启动virtualbox时,发现virtualbox报创建COM对象失败错误,如下图: 查找相关资料发现很有可能是virtualbox与OS不兼容 ...

  5. 编译器 expected unqualified-id before numeric constant 错误

    今天调试代码,碰到expected unqualified-id before numeric constant 错误,代码的错误模块出现在一个函数模块上, 奇怪的是这个函数模块之前编译了很多次,也没 ...

  6. Visual Studio 2012 Update3 安装失败错误“正在关闭管道'

    问题描述: Visual Studio 2012 update3 安装失败错误“ 正在关闭管道' 环境: Windows 7 SP1(x86和x64) Windows 8(x86和x64) Windo ...

  7. MySQL主从失败 错误Got fatal error 1236解决方法

    --MySQL主从失败 错误Got fatal error 1236解决方法 ----------------------------------------------------2014/05/1 ...

  8. UserControl 的一个值得注意的问题 [属性" * "的代码生成失败.错误是:"程序集"*.Version=1.0.0.0,Culture=neutral,..........无标记为序列化"

    开发时在做UserControl,需要注意的List<>集合问题~~~! 其他类型的集合可能也存在这样的问题,但是我没去测试,在写集合的时候一般List<>用的多点,所以经常碰 ...

  9. 【常见的SQL Server连接失败错误以及解决方法】

    [常见的SQL Server连接失败错误以及解决方法] http://blog.csdn.net/feixianxxx/article/details/5523922 ADO连接SQL Server ...

随机推荐

  1. 2019 蓝桥杯国赛 B 组模拟赛 D. 程序设计:公约数

    蒜头君有n个数,他想要从中选出k个数,使得它们的最大公约数最大.请你求出这个最大的最大公约数. 输入格式第一行输入两个整数 .第二行输入 个整数 . 输出格式输出一个整数. 数据范围 样例输入14 3 ...

  2. Python核心技术与实战——八|匿名函数

    今天我们来学习一下匿名函数.在学习了上一节的自定义函数后,是时候了解一下匿名函数了.他们往往非常简短,就一行,而且有个关键字:lambda.这就是弥明函数. 一.匿名函数基础 匿名函数的基本格式是这样 ...

  3. 开学JAVA第一次测试

    定义 ScoreInformation 类,其中包括七个私有变量(stunumber,name, mathematicsscore, englishiscore,networkscore, datab ...

  4. 对Nuxt的研究

    Nuxt就是基于Vue的一个应用框架,采用服务端渲染,让你的SPA应用(Vue)也可以拥有SEO Nuxt的生命周期有些在服务端(Node),客户端,甚至两边都在: 1.其他之前都不存在Window对 ...

  5. vue+elementUI 做的递归组件

    废话少说,直接上最新鲜的干货 当然,你得提前安装好bootstrap,router,element-ui,vue-axios 1.上递归组件,此处参考了某位大神的代码,具体不知道是谁,因为到处都有人用 ...

  6. adb打开系统设置的命令

    adb命令打开手机设置页面 设置主页面adb shell am start com.android.settings/com.android.settings.Settings 安全adb shell ...

  7. js返回上一页并刷新 代码整理

    真正好用: 强制载入后刷新一次 在要载入的页面加入以下代码: <script> if(window.name != "bencalie"){ location.relo ...

  8. R 大小写转换

    >x = "CAGTTTCTTGAGTCTGATTAATTCAGGTTTCGGGGT"#定义字符串变量x>tolower(x)[1] "cagtttcttga ...

  9. github 的 fork 取消功能

    进入该 fork 目录后 找到 Settings 点击后拉到底 找到含有 Delete 字样的按钮点击 弹出的对话框输入你删除的这个项目名 后删除 链接

  10. php部署调优

    转自Laravel学院,  作者:学院君 最近刚好看到一些php.ini优化问题处理. 很多文章都是把配置全部翻译. (内容翻译太多和流程结构写的不是很清晰,看起来也头大.但是建议全部内容看几遍了解一 ...