广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中varchar的大小写字符比较
  • 621
分享到

MySQL中varchar的大小写字符比较

2024-04-02 19:04:59 621人浏览 八月长安
摘要

这篇文章主要介绍“Mysql中varchar的大小写字符比较”,在日常操作中,相信很多人在mysql中varchar的大小写字符比较问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解

这篇文章主要介绍“Mysql中varchar的大小写字符比较”,在日常操作中,相信很多人在mysql中varchar的大小写字符比较问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql中varchar的大小写字符比较”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!


背景:
程序某日提出的SQL问题, 发现比较varchar字符串内容的时候, 大小写不敏感;
测试环境还原问题, 环境构造如下:

  1. create table case_sen(id int primary key, name varchar(32)notnull);

  2. insert into case_sen values(1,'LucyLoveLily');

  3. insert into case_sen values(2,'lucylovelily');

  4. insert into case_sen values(3,'TomHateLarry');

  5. insert into case_sen values(4,'tomhatelarry');


效果如下:
MySQL中varchar的大小写字符比较

实际上程序希望只有id=1的匹配到,  
同样的问题也出现在like里面:
MySQL中varchar的大小写字符比较

程序有问是不是lower_case_table_names的问题, 显然.........不是 _(:з」∠)_

场景:
MySQL-5.7进行的还原, 实际上这个问题和版本没有关系;


分析:
首先可以确认的是, 表内的数据并没有问题, 该大写的还是大写, 该小写的还是小写;

那么问题最有可能出在MySQL的运算符"="和like上, 这两类运算的原理可能因为某些原因/设置/导致不进行大小写区分;

排查方向定下来以后, 试着用关键字comparison, case sensitive在文档里面找找, 发现有一个章节提到了这个问题,并给出了一些示例;
PS: 章节名  B.5.4.1 Case Sensitivity in String Searches

文档示例如图:
MySQL中varchar的大小写字符比较

对文档的描述进行归纳:  非binary类型的string进行逻辑运算时, 会依据collate的配置来计算结果;

所以如果collate的设置对大小写不敏感, 那么就会出现测试环境中的效果;

那么问题来了, utf8mb4的默认collate是什么?
MySQL中varchar的大小写字符比较

发现是utf8mb4_general_ci, 通过对文档内容的分析, 这个后缀ci代表的意思应该就是case-insensitive ;

那么试着换一下字符集的collate, 看看是不是能区分大小写;
MySQL中varchar的大小写字符比较

BinGo~~~

当然, 在列上面指定collate为utf8mb4_bin也可以达到一样的目的;

PS: mysql的所有字符集默认都使用XXX_general_ci, 而有的字符集会有XXX_general_cs, 但是utf8是没有的, 所以要使用utf8_bin;

PPS: 兴趣阅读: https://www.percona.com/live/europe-amsterdam-2015/sites/default/files/slides/PL_AMS_Unicode_Booking169_v3.pdf

PS: 注意索引哟, 5.7是可以的, <5.7可没有试过 ╰(*°▽°*)╯
MySQL中varchar的大小写字符比较

到此,关于“MySQL中varchar的大小写字符比较”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中varchar的大小写字符比较

本文链接: https://www.lsjlt.com/news/59608.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中varchar的大小写字符比较
    这篇文章主要介绍“MySQL中varchar的大小写字符比较”,在日常操作中,相信很多人在MySQL中varchar的大小写字符比较问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-18
  • mysql中字符串怎么比较大小
    mysql中比较字符串大小的方法通过在字符串后面加0实现比较语法:ORDER BY '123'+0;示例:SELECT '123'+0>127; -- 结果为0,表示falseSELECT '1...
    99+
    2022-10-03
  • MySQL中字符串比较大小详解(日期字符串比较问题)
    前言 数据库中在对于数字与非数字混合的字符串,在进行大小比较的时候,如果两字符串长度相等,那么两字符串就会比较相同位置的字符,比较时若字符是数字,则直接比较,若字符是非数字那么会转换为ascii码进行比较,若在某位置上已...
    99+
    2022-08-31
  • MySQL数据库中varchar类型的数字比较大小的方法
    创建测试表 -- ---------------------------- -- Table structure for check_test -- --------------...
    99+
    2022-11-12
  • MySQL如何进行区分大小写的字符串比较?
    As we know that MySQL is not case-sensitive while comparing characters but it can be changed i.e. MySQL can perform case...
    99+
    2023-10-22
  • python 字符串比较忽略大小写的方法
    A.正则表达式,使用IGNORECASE标志 >>> import re >>> m = re.search('multi', 'A mUltiCased string', re.IGNOREC...
    99+
    2023-01-31
    大小写 字符串 方法
  • java比较字符不区分大小写的方法
    equalsIgnoreCase() 方法用于将字符串与指定的对象比较,不考虑大小写。(推荐:java视频教程)语法public boolean equalsIgnoreCase(String anotherString)参数:anObje...
    99+
    2019-08-15
    java
  • 字符串如何比较大小
    字符串比较大小的步骤:1、将要比较的两个字符串分别赋给两个变量;2、比较两个字符串的长度,较短的字符串将被认为是较小的字符串;3、如果长度相同,逐个比较它们的字符;4、从字符串的第一个字符开始,比较两个字符串的ASCII值;5、如果ASCI...
    99+
    2023-08-18
  • java怎么不区分大小写比较字符串
    java中为了执行忽略大小写的比较,可以调用equalsIgnoreCase( )方法。当比较两个字符串时,它会认为A-Z和a-z是一样的。推荐:java视频教程equalsIgnoreCase()方法用于将字符串与指定的对象比较,不考虑大...
    99+
    2015-12-05
    java 字符串
  • MySQL数据库中varchar类型的数字比较大小的方法是什么
    这篇文章主要介绍“MySQL数据库中varchar类型的数字比较大小的方法是什么”,在日常操作中,相信很多人在MySQL数据库中varchar类型的数字比较大小的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-25
  • MySQL 可以执行什么样的字符串比较(区分大小写或不区分大小写)?
    MySQL在比较字符时无法执行区分大小写的比较。可以通过以下来自表格'Employee'的示例来说明:mysql> Select * from Employee; +----+--------+--------+ | ID ...
    99+
    2023-10-22
  • 怎么在python中比较字符串的大小
    怎么在python中比较字符串的大小?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.sc...
    99+
    2023-06-14
  • php字符串如何进行大小写不敏感比较
    这篇文章主要讲解了“php字符串如何进行大小写不敏感比较”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php字符串如何进行大小写不敏感比较”吧!方法:1、用“strcasecmp(strin...
    99+
    2023-06-20
  • Java怎么比较两个字符串的大小
    这篇文章主要介绍“Java怎么比较两个字符串的大小”,在日常操作中,相信很多人在Java怎么比较两个字符串的大小问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java怎么比较两个字符串的大小”的疑惑有所帮助!...
    99+
    2023-07-04
  • php如何不分大小比较字符串
    小编给大家分享一下php如何不分大小比较字符串,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在php中,可以使用内置函数strncasecmp()来不区分大小写的比较字符串,语法“strncasecmp(str1,str2...
    99+
    2023-06-08
  • Java中两个字符串进行大小比较的方法
    目录一:大小比较:使用 String.compareTo 方法二:字符串是否相等比较下面介绍下java中两个字符串如何比较大小一:大小比较:使用 String.compareTo 方...
    99+
    2022-12-14
    Java比较字符串大小 Java字符串大小比较
  • python中用cmp比较字典大小
    字典长度字典dic1,dic2 值,以及比较结果如下:可知字典长度越长,字典就大。疑问一:如果长度不一样呢,长度比较长但键值比较小,那个大呢?答案:字典长度是第一比较项,长度长的就大长度相等,比较键  疑问二:如果键不一样且比较小,但是va...
    99+
    2023-01-31
    中用 字典 大小
  • javascript比较数字大小的方法
    这篇文章主要介绍“javascript比较数字大小的方法”,在日常操作中,相信很多人在javascript比较数字大小的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ja...
    99+
    2022-10-19
  • mysql的datetime字段建立索引并比较大小
    文章目录 1、问题背景2、优化过程1) 操作索引2)是否走索引判断3)datetime使用索引查询 1、问题背景 最近测试库查询一个表的数据,需要用到唯一的一个日期类型字段作为 where 的子查询(查询当天的数据...
    99+
    2023-08-20
    mysql 数据库 sql
  • Mysql中日期如何比较大小
    小编给大家分享一下Mysql中日期如何比较大小,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!假如有个表product有个字段ad...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作