mysql那些事 WHERE条件 字符串的引号

Posted 壁虎漫步.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql那些事 WHERE条件 字符串的引号相关的知识,希望对你有一定的参考价值。

前言:所谓的坑,两个意思,一个是软件本身的bug,一个是使用者常犯的错误。

phper在日常开发中经常和mysql打交道。特别是在没有分层的中小应用中,phper开发要关注sql语句的实现。

技术分享图片

入正题,上建表语句:

DROP TABLE IF EXISTS `test_sql`;

CREATE TABLE `test_sql` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘自增id‘,

`name` varchar(32) NOT NULL DEFAULT ‘0‘ COMMENT ‘名字‘,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=‘测试表‘;

上数据:

INSERT INTO `test_sql`

VALUES

(‘1‘, ‘0‘),

(‘2‘, ‘www.haodaquan.com‘),

(‘3‘, ‘0‘),

(‘4‘, ‘123‘),

(‘5‘, ‘123php‘),

(‘6‘, ‘123php在路上‘),

(‘7‘, ‘php在路上‘);

好了,看到的是这张表:

技术分享图片

题目来了:请查找name值为0的数据。

于是错误的sql出来了:

select `id`,`name` from test_sql where name=0

结果与预期不符,如下图:

技术分享图片

为什么?

sql也是弱类型啊,比较0和字符串的时候,也是返回true的。

正确的sql:

select `id`,`name` from test_sql where name=‘0‘

技术分享图片

结论:字符类型的字段做where 条件时一定要加引号呀。

以上是关于mysql那些事 WHERE条件 字符串的引号的主要内容,如果未能解决你的问题,请参考以下文章

mysql字符集那些事

mysqlwhere条件判断字符位数

sql查询语句,where条件中包含单引号的解决方案

SQL查询语句中,为啥在WHERE后面查询条件有的要加单引号,有的不用加,啥时候加,啥时候不加?

Mysql中where条件一个单引号引发的性能损耗

SQL语句update中的where条件的用法问题