最近在联调某个业务时发现使用的签名总是验证不过,该业务根据如用户名userName后加了空格依然能够根据userName查询到结果。即

select * from user where username = "asdf" 与 select * from user where username = "asdf " 的 效果是一致。

问题是:为什么在DB查询条件中的字符串包含空格也可以查到实际没有包含空格的这条记录呢?

原因

如果字段是char或varchar类型,那么在字符串比较的时候MySQL使用PADSPACE校对规则,会忽略字段末尾的空格字符。

官方手册说明(5.0版本):http://dev.mysql.com/doc/refman/5.0/en/char.html

11.1.6.1. The CHAR and VARCHAR Types

All MySQL collations are of type PADSPACE. This means that all CHAR, VARCHAR, and TEXT values in MySQL are compared without regard to any trailing spaces. “Comparison” in this context does not include the LIKE pattern-matching operator, for which trailing spaces are significant.

解决方法

方法1:使用like语句;

select * from table where user like 'abcdefg ';

方法2:使用binary类型;

select * from table where user = BINARY 'abcdefg ';

方法3:再添加一个length()条件;

select col from table where col = 'a ' and LENGTH(col) = LENGTH('a ')

mysql查询字段数据是否有空格_mysql查询条件字段值末尾有空格也能查到数据问题...相关推荐

  1. mysql 把换行符全部删掉_mysql怎么去除字段中换行符与回车符

    去掉mysql数据中的换行与回车符,解决方法: 复制代码 代码示例: update tablename set field = replace(replace(field, char(10), '') ...

  2. mysql查询最新的一条记录_mysql 查询不同用户 最新的一条记录

    数据库记录: MYSQL查询不同用户 最新的一条记录 方法1:查询出结果后将时间排序后取第一条(只能取到一条,并且不能查询不同客户的记录) SELECT CUSTOMER_ID,CONTENT,MOD ...

  3. mysql查询09软件技术1班_MySQL查询语句的45道练习(2019.09最新版)

    一.设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).用SQL语句创建四个表并完成相关题目. 建表语句 #添加学生信息 ...

  4. mysql查询跟某个人同在部门_MySQL 查询习题详解

    用sql sever  不显示列名 需要加dbo 1.首先进行建表: #建学生信息表studentcreate tablestudent ( snovarchar(20) not null prima ...

  5. mssql 将查询结果作为表名参数_MySQL·查询(一)

    最近把时间都放在了回顾SQL语言上,因为能够按照需求在数据库中提取数据是非常重要的,太久没有去碰SQL,所以就花了一段时间去重新总结关于MySQL中的查询,希望下面简单的总结可以帮助大家理解SQL的查 ...

  6. mysql 查询空格_mysql查询字段中带空格的值的sql语句

    查找字段有空格的方法我们可以使用replace替换或使用trim直接查询删除,下面我就先来给各位介绍这两个函数的例子,然后再进行举例说明. (1)mysql replace 函数 语法:replace ...

  7. mysql查询条件字段值末尾有空格的问题

    mark MYSQL的binary解决mysql数据大小写敏感问题的方法 转载于:https://www.cnblogs.com/tuhooo/p/8466175.html

  8. mysql查询数据上一条_MySQL查询当前数据上一条和下一条的记录

    如果ID是主键或者有索引,可以直接查找: 方法一: 查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误): select * from tab ...

  9. mysql查询补齐12个月_MySQL查询12个月数据,无数据补0

    1.数据库  和表就用自己的,下面是代码 select case month(shi_com_time) when '1' then sum(mileage) else 0 end as 一月份, c ...

最新文章

  1. 不懂Redis Cluster原理,我被同事diss了!
  2. #mysql50#_#mysql50#.ssh设个啥数据库?
  3. win10 mysql5.5无响应_Win10安装mysql5.5安装最后一步停住卡死未响应的解决方法
  4. 因为虚拟机导致的错误
  5. plupload+artdialog实现多平台文件上传
  6. Linux下启动mongodb
  7. matlab图像处理创建项目,《MATLAB图像处理超级学习手册》一一2.1 矩阵的创建
  8. PHP代码中的情话,php语言编程情话
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的企业客户管理系统
  10. Javascript是实现HTML5强大功能的重要语言
  11. 正则表达式验证IP和端口格式的正确性
  12. ORA-01034:ORACLE not available问题的解决方法
  13. 前端React实现pdf在线阅读和电子合同
  14. 实时协同编辑的实现: 编辑锁, OT算法
  15. linux如何停止命令运行,linux的停止命令
  16. Android RecyclerView使用ItemDecoration刻画时间线/时间轴/时光轴timeline
  17. 利用吉洪若夫正则化及其西尔韦斯特方程来修复受损图像
  18. 记事本实现浪漫烟花、浪漫爱心、浪漫流星雨
  19. 深度学习语义分割论文笔记(待完善)
  20. python分时间段统计_Python Pandas:按日期分组并统计每个时段的新记录

热门文章

  1. SQL50道练习题(1-15)
  2. 这是一段有毒的js代码,求大神解释!!!
  3. zookeeper配置集群
  4. python与冒泡排序
  5. Vs2015智能提示英文?
  6. java 经典免费教程下载
  7. 机器学习读书笔记(一)k-近邻算法
  8. HDU1505(HDU1506的加强版)
  9. 我心中的核心组件(可插拔的AOP)~大话开篇及目录
  10. CSS3渐变——线性渐变