详解Mysql查询条件中字符串尾部有空格也能匹配上的问题
一、表结构
TABLE person
id | name |
---|---|
1 | 你 |
2 | 你(一个空格) |
3 | 你(二个空格) |
二、查询与结果
select * from person where `name` = ?
无论 ? = ”你 + 几个空格”,都会检索出全部三个结果。
三、原因
MySQL 校对规则属于PADSPACE,会忽略尾部空格
针对的是 varchar char text …… 等文本类的数据类型
此为 SQL 标准化行为。无需要设置也无法改变。
四、想要精确查询怎么办?
方法一:like
select * from person where `name` like ?
方法二:BINARY
select * from person where `name` = BINARY ?
BINARY 不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解成精确匹配
以上就是本次介绍的全部相关知识点,如果大家有任何补充可以联系我们小编。
相关推荐
-
Mysql字符串处理函数详细介绍、总结
一.简明总结ASCII(char) 返回字符的ASCII码值BIT_LENGTH(str) 返回字符串的比特长度CONCAT(s1,s2-,sn) 将s1,s2-,sn连接成字符串CONCAT_WS(sep,s1,s2-,sn) 将s1,s2-,sn连接成字符串,并用sep字符间隔INSERT(str,x,y,instr) 将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果FIND_IN_SET(str,list) 分析逗号分隔的list列表,如果发现str,返回
-
MySQL动态字符串处理DYNAMIC_STRING
MySQL中,常常会看到一些关于动态字符串的处理,列如:DYNAMIC_STRING. 为了记录动态字符串的实际长度,缓冲区的最大长度,以及每次字符串需要调整时,及时分配新的内存,以及调整长度.MySQL使用了DYNAMIC_STRING来保存动态字符串相关的信息: typedef struct st_dynamic_string { char *str; size_t length, max_length, alloc_increment; } DYNAMIC_STRING; 在这个结构体中,
-
详解Mysql查询条件中字符串尾部有空格也能匹配上的问题
一.表结构 TABLE person id name 1 你 2 你(一个空格) 3 你(二个空格) 二.查询与结果 select * from person where `name` = ? 无论 ? = "你 + 几个空格",都会检索出全部三个结果. 三.原因 MySQL 校对规则属于PADSPACE,会忽略尾部空格 针对的是 varchar char text -- 等文本类的数据类型 此为 SQL 标准化行为.无需要设置也无法改变. 四.想要精确查询怎么办? 方法一:like
-
详解MySQL查询时区分字符串中字母大小写的方法
如果你在mysql有唯一约束的列上插入两行值'A'和'a',Mysql会认为它是相同的,而在oracle中就不会.就是mysql默认的字段值不区分大小写?这点是比较令人头痛的事.直接使用客户端用sql查询数据库. 发现的确是大小不敏感 . 通过查询资料发现需要设置collate(校对) . collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: case sensitive collation,区分大小写 *
-
详解 Mysql查询结果顺序按 in() 中ID 的顺序排列
详解 Mysql查询结果顺序按 in() 中ID 的顺序排列 实例代码: <select id="queryGBStyleByIDs" resultMap="styleMap"> select style_num_id ,style_id,style_title,style_pic FROM gb_style where online = 1 AND is_hide = 0 and style_num_id in <foreach collecti
-
详解mysql查询缓存简单使用
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一. 当我们开启Mysql的查询缓存,当执行完全相同的SQL语句的时候,服务器就会直接从缓存中读取结果.当数据被修改, 之前的缓存会失效,所以修改比较频繁的表不适合做查询缓存. 一.查询
-
详解MySQL 查询语句的执行过程
首先先简单的将一个查询语句背后MySQL做了什么捋一捋: 客户端发送一条查询给服务器. 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一个阶段. 服务器端进行SQL解析,预处理,再由优化器生成对应的执行计划. MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询. 将结果返回给客户端. 接着我们就将这个过程中的这些步骤详细的进行展开. 1.客户端和服务器端之间的通信方式 客户端和服务器之间的通信是一种半双工的通信,即在同一时刻,只能有一方向另一方发送
-
MySQL查询条件中in会用到索引吗
当用人问你MySQL 查询条件中 in 会不会用到索引,你该怎么回答? 答案:可能会用到索引 动手来测试下 1.创建一张表,给字段port建立索引 CREATE TABLE `pre_request_logs_20180524` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ip` char(16) NOT NULL COMMENT '代理IP', `port` int(8) NOT NULL COMMENT '端口号', `status` enum('成功'
-
MySQL查询条件中放置on和where的区别分析
导语 今天在写 SQL 的时候,遇到一个问题.需求是这样的,查询数据,按照评分倒序.近一周访问量倒序,这样进行排序.问题是常规的写法,将 day >= xxx 条件放到 where 中, 如果某些数据近一周没有访问量,那么这条数据就查不出来.解决办法呢,就是将条件放到 LEFT JOIN 中. MySQL 语句执行顺序 首先先说明一个概念,MySQL 语句执行的顺序,并不是按照 SQL 语句的顺序.下面是示例 SQL SELECT DISTINCT < select_list > FRO
-
MySQL查询条件常见用法详解
本文实例讲述了MySQL查询条件常见用法.分享给大家供大家参考,具体如下: 条件 使用where子句对表中的数据筛选,结果为true的行会出现在结果集中 语法如下: select * from 表名 where 条件; 例: select * from students where id=1; where后面支持多种运算符,进行条件的处理 比较运算符 逻辑运算符 模糊查询 范围查询 空判断 比较运算符 等于: = 大于: > 大于等于: >= 小于: < 小于等于: <= 不等于:
-
详解MySQL 慢查询
查询mysql的操作信息 show status -- 显示全部mysql操作信息 show status like "com_insert%"; -- 获得mysql的插入次数; show status like "com_delete%"; -- 获得mysql的删除次数; show status like "com_select%"; -- 获得mysql的查询次数; show status like "uptime";
-
详解MySQL数据库千万级数据查询和存储
百万级数据处理方案 数据存储结构设计 表字段设计 表字段 not null,因为 null 值很难查询优化且占用额外的索引空间,推荐默认数字 0. 数据状态类型的字段,比如 status, type 等等,尽量不要定义负数,如 -1.因为这样可以加上 UNSIGNED,数值容量就会扩大一倍. 可以的话用 TINYINT.SMALLINT 等代替 INT,尽量不使用 BIGINT,因为占的空间更小. 字符串类型的字段会比数字类型占的空间更大,所以尽量用整型代替字符串,很多场景是可以通过编码逻辑来实
随机推荐
- Vue常用指令V-model用法
- 用好Regsvr32 解决系统疑难杂症
- Linux ftp 命令行中下载文件get与上传文件put的命令应用详解
- iOS App设计模式开发中对interpreter解释器模式的运用
- php中把美国时间转为北京时间的自定义函数分享
- PHP的Yii框架中YiiBase入口类的扩展写法示例
- windows的文件系统机制引发的PHP路径爆破问题分析
- PHP在XP下IIS和Apache2服务器上的安装
- PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
- CSS文字截取功能实现代码
- ASP移动文件函数movefile权限不足的替代方法
- Java实现获得MySQL数据库中所有表的记录总数可行方法
- 文本框的字数限制功能jquery插件
- JS字符串拼接在ie中都报错的解决方法
- 微信小程序 共用变量值的实现
- java日期工具类实例分享
- 插入排序的顺序表实现代码
- Django学习笔记之Class-Based-View
- PHP基于MySQL数据库实现对象持久层的方法
- Android编程中FileOutputStream与openFileOutput()的区别分析