您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

MySQL数据库:SQL语句中不可省去的引号_MySQL

2024/3/21 12:09:18发布30次查看
bitscn.com
mysql数据库:sql语句中不可省去的引号
有一次在代码中发现了一个bug,在排查过程中,差点晕翻;作一个dba也碰到这种低级错误;大为自嘲。其实这个问题在官方手册里就写得很明白;(可见官方文档的重要性)
mysql > create table h1 (id int , col1 char ( 1 ));query ok, 0 rows affected ( 0.00 sec)mysql > insert into h1 select 1 ,’i ' ;query ok, 1 row affected (0.00 sec)records: 1 duplicates: 0 warnings: 0mysql> insert into h1 select 2,’f ' ;query ok, 1 row affected ( 0.00 sec)records: 1 duplicates: 0 warnings: 0 mysql > insert into h1 select 2 ,’ 0 ′;query ok, 1 row affected ( 0.00 sec)records: 1 duplicates: 0 warnings: 0mysql > select * from h1 ;+ —— + —— + | id | col1 | + —— + —— + | 1 | i | | 2 | f | | 2 | 0 | + —— + —— + 3 rows in set ( 0.00 sec)mysql > select * from h1 where col1 = 0 ;+ —— + —— + | id | col1 | + —— + —— + | 1 | i | | 2 | f | | 2 | 0 | + —— + —— + 3 rows in set , 2 warnings ( 0.00 sec)mysql > select * from h1 where col1 = ’ 0 ′;+ —— + —— + | id | col1 | + —— + —— + | 2 | 0 | + —— + —— + 1 row in set ( 0.00 sec)mysql > select * from h1 where col1 = ’ 1 ′;empty set ( 0.00 sec)mysql > select * from h1 where col1 = 1 ;empty set , 2 warnings ( 0.00 sec)
发现没有:
col1=0 ; 所有行被选中;
col1=’0′ ; 结果集正常
mysql > select * from h1 where col1 = ’ 1 ′;empty set ( 0.00 sec)mysql > select * from h1 where col1 = 1 ;empty set , 2 warnings ( 0.00 sec)
想知道为什么吗?
看这里.
mysql > show warnings;+ ——— + —— + ————————————— + | level | code | message | + ——— + —— + ————————————— + | warning | 1292 | truncated incorrect double value: ‘i’ | | warning | 1292 | truncated incorrect double value: ‘f’ | + ——— + —— + ————————————— + 2 rows in set ( 0.00 sec)
mysql当数据类型不匹配时,尊重用户的输入,将字段的类型做了隐式转换然后来匹配,而字符向数字转,结果都是0;
bitscn.com
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product