例如一个表中字段是varchar类型:

desc test;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int         | NO   | PRI | NULL    | auto_increment |
| name  | varchar(10) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
select * from test;
+----+------+
| id | name |
+----+------+
|  1 | 111  |
|  2 | 111a |
|  3 | 111b |
|  4 | 222  |
|  5 | 222a |
|  6 | 222b |
+----+------+
select * from test where name=111;
+----+------+
| id | name |
+----+------+
|  1 | 111  |
|  2 | 111a |
|  3 | 111b |
+----+------+

这种情况,如果你去delete from test where name = 111;原本是想删除id = 1这一行,但是却删除了三行,结果就造成了悲剧。

在oracle中不会出现这种情况,直接给你报错:

16:43:24 SCOTT@orcl11g>select * from test where name=111;
ERROR:
ORA-01722: invalid number

正确的语句应该是delete from test where name = '111'; 是字符串的类型,在where条件中必须加上单引号或双引号。

官方文档说明:

https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html

strings. Strings are automatically converted to numbers and numbers to strings as necessary.

如果查询varchar类型不加引号最终是以数字的形式进行比较,如果字符串无法直接转换成数字,则字符串会进行前置数字正则匹配​

MySQL中varchar类型字段隐式转换造成多删除数据相关推荐

  1. SQL中int类型与varchar类型的隐式转换

    如果你对SQL使用的经验不是足够丰富,如果你在SQL中解决的问题不够多,请认真看完本章,它可以让你避免一个很可能经常会犯的错误! 我们先创建一个测试表 create table #table1 ( i ...

  2. C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换。

    C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式 ...

  3. JavaScript 类型的隐式转换

    JavaScript各种类型的隐式转换,一直没理出个头绪来,每次碰到都是得过且过,没有深究.今天读<JavaScript权威指南>,借其中章节一用,只为搞个明白. 一.布尔类型转换 布尔值 ...

  4. mysql to double_MySQL令人咋舌的隐式转换 - 惊觉...

    导读 作者徐晨亮, MySQL DBA,知数堂学员.热衷于数据库优化,自动化运维及数据库周边工具开发,对 MySQL源码有一定的兴趣 本文建议横屏观看,效果更佳 一.问题描述 [email prote ...

  5. mysql with ties_MySQL令人咋舌的隐式转换

    二.源码解释 堆栈调用关系如下所示: 其中JOIN::exec()是执行的入口,Arg_comparator::compare_real()是进行等值判断的函数,其定义如下 int Arg_compa ...

  6. SqlServer 0和空字符串''等价?-----类型的隐式转换问题

    今天在修改一个bug的时候发现的一个比较奇怪的问题查询部门的时候偶尔会出现错误多查出一个不正确的部门 最后找到了原因 部门表 deptInfo 部门ID         部门名称 deptId     ...

  7. MySQL中varchar类型在5.0.3后的变化

    1.mysql varchar类型变化: mysql 5.0.3 之前: 0--255字节 varchar(20)中的20表示字节数,如果存放urf8编码的话只能放6个汉字. MySQL 5.0.3 ...

  8. Mysql中varchar类型的猫腻!

    varchar的存储规则 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节). 5.0版本以上,varchar(20),指的是20字符,无论存 ...

  9. 解决Mysql中longtext类型字段数据丢失问题

    一.问题背景 一个数据库表的某个字段设置成了longtext类型,但是向数据库表中更新数据时,却发现部分数据丢失.相应字段的数据大小超过了4M,longtext类型可存储4G左右数据,按常理说不会出现 ...

最新文章

  1. java 跳转 oop_Java基础之:OOP——接口
  2. mysql 审核引擎 goInception 的基本使用
  3. Socket通信总结(附C++实现)
  4. Ubuntu16.04安装PCL库的python实现python-pcl,并且通过pcl加载pcd文件验证python-pcl是否安装成功
  5. java web 页面提速
  6. js/jquery判断浏览器的方法总结
  7. ubuntu下的对拍
  8. mysql命令书写顺序_MySQL SQL语句书写顺序和执行顺序
  9. 模型稳定后放在服务器上,把工程放在服务器上
  10. cuSPARSE库:(十)cusparseCreateMatDescr()
  11. WSASocket()和socket()两个函数的区别
  12. 鸿蒙系统小米手机,华为鸿蒙系统已经发布,小米等国产手机会使用鸿蒙系统吗?...
  13. 拓端tecdat|R语言分解商业周期时间序列数据:线性滤波器、HP滤波器、Baxter King滤波器、Beveridge Nelson分解等去趋势方法
  14. 阿里云毕龙飞:五个维度推进企业生产关系数字化
  15. bpsk调制matlab,MATLAB仿真-BPSK调制.doc
  16. mathematica变分法和样条插值求解最小旋转曲面
  17. python根据题库答案自动答题_Selenium实现百度自动答题 懒人获取积分
  18. WordPress教程 WordPress自动文章添加特色图片教程
  19. 用python画多来a梦-Python—turtle画图(哆啦A梦)
  20. java当前不可用,java代码向服务端狂发消息,导致的服务器连接通道不可用

热门文章

  1. 【干货】2021微信生态下的营销洞察.pdf(附下载链接)
  2. App个人信息保护合规十大常见问题及处置策略
  3. classification、part segmentation、semantic segmentation、instance segmentation
  4. 万物皆可Graph | 当推荐系统遇上图神经网络(二)
  5. Python3机器学习工具包基础复习
  6. 面试准备每日系列:计算机底层之并发编程(一)原子性、atomic、CAS、ABA、可见性、有序性、指令重排、volatile、内存屏障、缓存一致性、四核八线程
  7. ROS入门-7.创建工作空间与功能包
  8. 227 Puzzle
  9. 你是如何管理你的时间的?-----时间管理与树的遍历
  10. 开启python之旅