首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql 不忽略大小写查询

基础概念

MySQL是一种关系型数据库管理系统,它使用结构化查询语言(SQL)进行数据操作。在MySQL中,默认情况下,字符串比较是区分大小写的。这意味着在进行模糊查询时,例如使用LIKE语句,MySQL会根据字符的大小写来匹配数据。

相关优势

区分大小写的查询可以提供更精确的数据匹配,这在某些情况下是非常重要的,比如在处理敏感信息或者需要严格数据一致性的场景中。

类型

MySQL中的大小写敏感性主要体现在以下几个方面:

  1. 服务器级别:MySQL服务器的字符集和排序规则(collation)决定了是否区分大小写。
  2. 数据库级别:创建数据库时指定的字符集和排序规则会影响其中的表和列。
  3. 表级别:可以在创建表时指定字符集和排序规则。
  4. 列级别:可以为表中的特定列指定字符集和排序规则。

应用场景

在需要严格区分大小写的场景中,如用户名、密码、身份证号等,应该使用区分大小写的查询。

问题与解决方法

如果你想进行不区分大小写的查询,可以通过以下几种方式实现:

  1. 修改排序规则:可以在创建数据库、表或列时指定不区分大小写的排序规则。例如,使用utf8_general_ci代替utf8_bin
代码语言:txt
复制
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
);
  1. 使用LOWER()UPPER()函数:在执行查询时,可以使用这些函数将字段值转换为全小写或全大写,然后进行比较。
代码语言:txt
复制
SELECT * FROM users WHERE LOWER(username) LIKE '%john%';
  1. 修改MySQL配置:可以通过修改MySQL的配置文件my.cnfmy.ini,设置全局的字符集和排序规则。
代码语言:txt
复制
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

参考链接

通过上述方法,你可以根据具体的需求选择合适的方式来执行不区分大小写的查询。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysql 模糊查询实现区分大小写

需求说明: 有时候,我们需要从数据库中模糊查询,但是字母有大写也有小写。 1:在执行查询的时候,需要忽略大小写。 2:以输入字母开头进行查询的 创建表: ? 请点击此处输入图片描述 ?...请点击此处输入图片描述 假设用户现在要查询name是D或者d开头的数据怎么? 解决需求一,忽略大小写的。可以先查询大写,在查询小写。然后union 下 先查询出所有小写字母d开头的: ?...在查询出所有大写字母D开头的 ? 请点击此处输入图片描述 ? 使用union 进行连接。 ? 请点击此处输入图片描述 ? 当然这样也可以得到最终的结果。但是这样执行从效率上来说很不好。...解决需求二:以输入字母开头进行模糊查询 在上面语句中我们可以看到使用的是‘d%’或者是'D%'这样看上去好像有点不是很好。...综上要想解决并优化实现查询 D或者d开头的可以使用到以下三个函数: 函数一:upper(keyword )。大写函数 函数二:lower(keyword )。

5K20
  • MySql查询区分大小写解决方案

    背景 当我们输入不管大小写都能查询到数据,例如:输入 lingyejun 或者Lingyejun ,LingYeJun都能查询同样的结果,说明查询条件对大小写不敏感。... *_ci: case insensitive collation,区分大小写 一般而言我们设置字符集注意以下两种: utf8_general_ci --区分大小写 utf8_bin--区分大小写...当字符设置为区分大小写时的解决办法: 1.可以将查询条件用binary()括起来。 ...查询默认是区分大小写的 如: select * from some_table where str=‘lingyejun'; select * from some_table where str='LINGYEJUN...'; 得到的结果是一样的,如果我们需要进行区分的话可以按照如下方法来做: 第一种方法: 要让mysql查询区分大小写,可以: select * from some_table where binary

    2.1K20

    mysql表名忽略大小写问题记录

    | 0 | +------------------------+-------+ 2 rows in set (0.00 sec) 2)lower_case_table_names = 1 区分大小写...里创建这张带有大写字母的表时,mysql还是默认的区分大小写设置,即对大小写不敏感。...下数据库名、表名、列名、别名大小写规则是这样的: 1)数据库名与表名是严格区分大小写的; 2)表的别名是严格区分大小写的; 3)列名与列的别名在所有的情况下均是忽略大小写的; 4)变量名也是严格区分大小写的...6)如果想在查询时区分字段值的大小写,则字段值需要设置BINARY属性,设置的方法有多种:      a)创建时设置:      CREATE TABLE T(A VARCHAR(10) BINARY)...修改mysql区分大小写设置: [root@test-huanqiu ~]# mysqladmin -uroot -p shutdown //以安全模式关闭数据库 [root@test-huanqiu

    6.6K70

    Elasticsearch 如何实现查询聚合区分大小写

    1、实战问题 最近社区里有多个关于区分大小写的问题: 问题1:ES查询和聚合怎么设置区分大小写呢? 问题2:ES7.6 如何实现模糊查询区分大小写?...2、问题拆解 2.1 拆解一:如果默认分词方式,能区分大小写的吗? 是的,默认分词器是Standard 标准分词器,是区分大小写的。...聚合走的是 keyword 类型了,涉及分词器:standard 了。...keyword 类型属于精准匹配,也就是说:单纯的keyword 类型没法实现大小写区分。 进一步小结: 我们上面的组合multi-field 方式,并没有解决检索和聚合区分大小写的问题?...由于写入阶段和检索阶段:normalizer 都生效,所以就实现了我们想要的区分大小写的结果。 5、小结 如果官方文档熟悉,我们的示例,实际就是官方文档:normalizer 的举例。

    7.8K20

    设置MySQL数据库区分大小写

    我们大家可能都碰到过这种情况:在Linux下,MySQL的表名区分大小写,而在Windows下是区分,从Windows下导出的数据脚本中使用的是小写,而Hibernate生成的SQL中表名是大写的,所以查不出数据...这个时候怎么办呢,显然改程序是不行的,时间上也不允许,所以只能设置MySQL数据库区分大小写了,大家看以下步骤: 1、查询MySQL是否设置了区分大小写 show variables like "%case...其中lower_case_table_names代表了:0是区分大小写; 1是区分大小写。显然我这个MySQL是区分大小写的。...已经区分大小写了: ?...拓展知识 MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的: 1、数据库名与表名是严格区分大小写的; 2、表的别名是严格区分大小写的; 3、列名与列的别名在所有的情况下均是忽略大小写

    16.4K21

    Windows 区分大小写

    背景 之前就看过说 Windows 区分大小写,但平时用得少倒也没什么体验,没想到还真能踩一次坑。 上周有同事找我帮忙看个问题,说是配置修改后生效。...最终发现是路径下存在名字仅大小写不同的两个文件夹,xxxA 和 xxxa 。xxxA 是他顺手备份时改的,xxxa 才是真正每次编译都会更新的目标文件夹。...其他 据说 Windows 是为了兼容 Dos,才没有区分大小写,后续就一直区分了。 Linux 则是一直区分大小写的。Mac 则可以在制作分区时选择此分区是否要区分大小写。...Win10 引入了 WSL,如上所述 Linux 是需要区分大小写的,为此微软给 NTFS 文件系统加了个 SetCaseSensitiveInfo 标志,可以支持在文件夹级别启用或禁用。...启用之后,Windows 程序也可以对这个文件夹下的文件区分大小写了。

    2.7K10

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券