`
grzrt
  • 浏览: 188682 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL中关于查询条件中的字符串空格问题

 
阅读更多

假设当前mysql数据库中有个表:sysuser

有个字段是:sysUseName

字段中有条记录的内容是:robin

请看下面这两个SQL语句:

SELECT * from sysuser s  where s.sysUseName = 'robin'

SELECT * from sysuser s  where s.sysUseName = 'robin空格'

SELECT * from sysuser s  where   s.sysUseName  =  'RoBin空格'

这三条语句均可以查询出那条记录。

官方文档上说是MySQL校对规则属于PADSPACE,对CHAR和VARCHAR值进行比较都忽略尾部空格,和服务器配置以及MySQL版本都没关系。

MySQL 安装目录下有个doc目录(Windows),里面的 Data Types -> String Types -> The CHAR and VARCHAR Types 这一小节有对这个问题的说明以及相关的例子(版本不一样可能章节的编号可能有变动,还是看标题吧): All MySQL collations are of type PADSPACE. This means that all CHAR and VARCHAR values in MySQL are compared without regard to any trailing spaces.    

这样带来的问题是:我如何需要精确匹配robin这个内容?假设有一个登陆功能,我希望用户输入‘robin’可以登陆,但是输入‘robin空格’却不能登录,该如何实现。

解决办法如下:

SELECT * from sysuser s  where   s.sysUseName  = BINARY 'robin '

BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写,精确匹配。

另外,因为有的MySQL特别是4.*以前的对于中文检索会有不准确的问题,可以在检索的时候加上binary。

分享到:
评论

相关推荐

    mysql分割字符串

    在MySQL数据库中,有时我们需要处理存储在单一字段内的多个值,这时就涉及到字符串的分割操作。这个场景在处理如CSV格式的数据或者存储一串相关但独立的信息时尤为常见。本篇将详细介绍MySQL中的字符串分割技术及其...

    详解Mysql查询条件中字符串尾部有空格也能匹配上的问题

    在MySQL数据库中,当我们在进行查询操作时,可能会遇到一种情况,即字符串查询条件的尾部有空格,但查询结果仍然能匹配上原本没有空格的记录。这个问题源自于MySQL的校对规则,它涉及到字符串类型数据的比较方式。 ...

    mysql常用字符串函数、字符串处理函数大全

    MySQL字符串函数是数据库操作中非常关键的一部分,它们用于处理和操作文本数据。以下是一些常见的MySQL字符串函数及其详细解释: 1. `ASCII(str)`:这个函数返回字符串`str`的第一个字符的ASCII码值。如果`str`为空...

    mysql 数值与字符串的比较

    在MySQL中,数值与字符串之间的比较是一个常见的操作,特别是在处理包含混合数据类型的列时。这里的例子涉及到了将数值条件应用于字符串类型的字段,如`uid`。这种比较可能会导致意想不到的结果,因为MySQL会尝试...

    Mysql字符串处理函数详细介绍、总结

    MySQL中的字符串处理函数是数据库操作中非常常用的一类函数,它们可以帮助我们对字符串进行各种操作,如拼接、截取、查找、转换等。以下是对这些函数的详细说明: 1. **ASCII(char)**:返回字符串中第一个字符的...

    MySql常用字符串函数

    MySQL中的字符串函数是数据库操作中不可或缺的一部分,它们用于处理和操作文本数据。下面将详细介绍这些常用的字符串函数: 1. **CONCAT(str1, str2,...)**:此函数用于连接两个或多个字符串,形成一个新字符串。...

    mysql拼接字符串函数.docx

    在上面的示例中,CONCAT_WS 函数将三个字符串连接起来,并使用逗号和空格作为分隔符。 CONCAT 函数和 CONCAT_WS 函数的区别 CONCAT 函数和 CONCAT_WS 函数都是用于字符串拼接的函数,但是它们之间有着一些区别: ...

    MySQL中字符串函数详细介绍[转][定义].pdf

    以下是一些重要的MySQL字符串函数的详细说明: 1. ASCII(str): 这个函数返回字符串`str`的第一个字符的ASCII码值。如果`str`为空字符串,它返回0;如果`str`为NULL,它返回NULL。例如,ASCII('M')返回50。 2. BIN...

    关于去除字符串前后的空白方法

    `trim()`方法是一种广泛应用于多种编程语言(如Java、C#等)及数据库管理系统(如Oracle、MySQL等)中的函数,用于移除字符串开头或结尾处的空白字符。这里的“空白字符”通常包括空格、制表符、换行符等不可见字符...

    MySQL 基础 - 字符串函数.md

    在MySQL数据库中,字符串函数是非常重要的组成部分之一,它们可以帮助我们有效地管理和操作数据中的文本部分。对于任何从事数据库管理、数据处理或数据分析的人来说,熟练掌握这些函数都是必不可少的技能。本文档将...

    常用SQL字符串函数集锦.

    在SQL(结构化查询语言)中,字符串函数是用于处理文本数据的重要工具。它们可以帮助我们进行各种操作,如提取、转换、格式化和比较字符串。本篇将详细讲解一些常用的SQL字符串函数,以便你在数据库操作中更加...

    解析 SQL 中的字符串.rar_SQL 解析_sql

    这些基本的字符串操作是SQL查询中不可或缺的部分,无论是在简单的数据检索还是复杂的业务逻辑处理中,都能发挥重要作用。理解并熟练运用这些函数和操作符,能够帮助我们更有效地处理和操作数据库中的文本数据。通过...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    2.2、按条件查询 (1) 比较运算符 > , ,= , != (),>= , [sql] view plain copy select * from STUDENT where STU_AGE>13; in(v1,v2..vn) ,符合v1,v2,,,vn才能被查出 IN关键字可以判断某个字段的值是否在...

    jdbc和odbc连接字符串 Oracle SQL MySQL DB2 Access Sybase Informix PostgreSQL

    这些连接字符串的编写时需注意大小写、空格和特殊字符。不同的数据库可能还需要额外的连接参数,如字符编码、服务器版本等。在实际应用中,确保正确配置这些参数,以确保数据库连接的顺利建立。 总结来说,JDBC和...

    MySQL中使用replace、regexp进行正则表达式替换的用法分析

    首先,replace函数是MySQL中的字符串函数,用于在字符串中查找指定的子字符串并替换为另一个字符串。replace函数的基本语法是replace(对象,搜索,替换),其中对象是要进行搜索和替换的字段,搜索是要被替换成字符串的...

    MySQL 连接字符串函数 CONCAT() CONCAT-WS() GROUP-CONCAT()

    在 MySQL 中,处理字符串拼接有几种非常实用的函数,它们分别是 `CONCAT()`、`CONCAT_WS()` 和 `GROUP_CONCAT()`。这些函数在数据库操作中经常用于构建复合字符串,以满足特定的需求。 1. **CONCAT() 函数** `...

    mysql问题,常见的mysql面试问题

    - **CHAR**:固定长度字符串类型,例如定义为`CHAR(10)`时,不论存储的字符数量多少都会占据10个字节空间,不足的部分用空格填充。 - **VARCHAR**:变长字符串类型,根据实际存储字符数量占用空间,额外存储一个或...

    用MySQL函数清除字符串首尾空白字符的方法

    在MySQL中,清理字符串首尾空白字符的问题是一个常见的需求,特别是在数据处理和比较时。由于输入数据可能存在不可预知的格式,例如包含了回车符(\r)、换行符(\n)或者多个连续的空格,这可能导致在进行字符串比对时...

Global site tag (gtag.js) - Google Analytics