MySQL查询不区分大小写问题剖析

news2025/5/19 2:19:31

概述

  • 在MySQL中,查询不区分大小写的问题通常与字符集的校对规则(Collation)有关。以下是详细解释和解决方案
  • 资料已经分类整理好:https://pan.quark.cn/s/f52968c518d3

一、原因分析

1. 默认校对规则

MySQL的默认校对规则(如 utf8_general_ciutf8mb4_0900_ai_ci)中的 ci 表示 Case Insensitive(不区分大小写)。此时,SELECT 查询会忽略字符串的大小写差异。

2. 存储引擎影响

如果表使用 MyISAM 引擎,文件名可能区分大小写(取决于操作系统),但数据内容的比较仍由校对规则决定。


二、解决方案

方法1:修改列的校对规则

通过指定 Case Sensitive(区分大小写)的校对规则(如 utf8_binutf8mb4_bin):

-- 查看当前校对规则
SHOW CREATE TABLE your_table;

-- 修改列的校对规则
ALTER TABLE your_table 
MODIFY COLUMN your_column VARCHAR(255) 
CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

方法2:查询时强制区分大小写

在查询中使用 BINARY 关键字或 COLLATE 子句:

-- 使用 BINARY
SELECT * FROM your_table 
WHERE BINARY your_column = 'YourValue';

-- 使用 COLLATE
SELECT * FROM your_table 
WHERE your_column COLLATE utf8mb4_bin = 'YourValue';

方法3:修改表或数据库的默认校对规则

创建表或数据库时直接指定区分大小写的规则:

-- 创建表时指定
CREATE TABLE your_table (
    your_column VARCHAR(255) COLLATE utf8mb4_bin
);

-- 创建数据库时指定
CREATE DATABASE your_db 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_bin;

方法4:配置文件全局设置

在 MySQL 配置文件(如 my.cnfmy.ini)中设置默认校对规则:

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_bin

三、其他注意事项

1. LIKE 查询

默认情况下,LIKE 也受校对规则影响。若需区分大小写,同样需使用 BINARY

SELECT * FROM your_table 
WHERE BINARY your_column LIKE '%Value%';

2. 索引影响

修改校对规则可能导致索引重建,但查询时使用 BINARYCOLLATE 可能导致索引失效,需权衡性能。

3. 操作系统兼容性

Linux 系统默认区分文件名大小写,而 Windows/Mac 不区分,需注意表名大小写问题(通过配置 lower_case_table_names 解决)。


四、验证校对规则

-- 查看数据库默认校对规则
SHOW VARIABLES LIKE 'collation_database';

-- 查看表的校对规则
SHOW TABLE STATUS LIKE 'your_table';

-- 查看列的校对规则
SELECT COLLATION_NAME 
FROM information_schema.columns 
WHERE TABLE_NAME = 'your_table' 
AND COLUMN_NAME = 'your_column';

通过以上方法,可以灵活控制 MySQL 查询是否区分大小写。根据实际需求选择合适方案!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2378113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL命令行导出数据(docker版本)

MySQL命令行导出数据(docker版本) 1、登录数据库 $mysql -h 10.1.1.143 -u root -p 2、用命令行从MySQL导出数据(无标题) #查看导出时可以存储的路径 mysql> SHOW VARIABLES LIKE secure_file_priv; ----------------------------------------- | Variable_name | Valu…

Python 3.13.3 安装教程

原文来自:Python 3.13.3 安装教程 | w3cschool笔记 (请勿标记为付费!!!) Python 是一种广泛使用的编程语言,广泛应用于 Web 开发、科学计算、数据处理、人工智能等领域。Python 3.13.3 作为 P…

现代化水库运行管理矩阵平台如何建设?

政策背景 2023年8月24日,水利部发布的水利部关于加快构建现代化水库运行管理矩阵的指导意见中指出,在全面推进水库工程标准化管理的基础上,强化数字赋能,加快构建以推进全覆盖、全要素、全天候、全周期“四全”管理,完…

2025程序设计天梯赛补题报告

2025程序设计天梯赛补题报告 仅包含L1 L2 L1-6 这不是字符串题 题目描述 因为每年天梯赛字符串题的解答率都不尽如人意,因此出题组从几年前开始决定:每年的天梯赛的 15 分一定会有一道字符串题,另外一道则一定不是字符串题。 小特现在有…

SpringBoot3.4.5下Lombok的@Data注解不生效,解决方案

程序员Feri一名12年的程序员,做过开发带过团队创过业,擅长Java、嵌入式、鸿蒙、人工智能等,专注于程序员成长那点儿事,希望在成长的路上有你相伴!君志所向,一往无前! 1.问题 最近的项目是Python、Java、鸿蒙的来回交叉,再做的一个Java的项目…

如何在 Windows 上安装类似 Synaptic 的 Chocolatey GUI 包管理器

如果你正在寻找类似 Linux 中 APT 的 Windows 包管理器,那么没有什么比 Chocolatey 更好的了。它是 Windows 10 上可用的最佳包管理器之一,可以通过命令行界面安装所有流行的软件和工具。然而,这并不意味着如果你不喜欢命令行,你就…

Guided Filtering相关记录

一、背景介绍 以前折腾保边滤波时候,刷了一些Guided Filtering相关资料。这里主要是对它们做个算法效果复现和资料简单整理。 二、Guided Filtering 1、基本原理 原版Guided Filtering的提出,主要是为了改善双边滤波做保边平滑滤波器时候的梯度翻转伪影…

智能AI构建工地安全网:跌倒、抽搐、区域入侵多场景覆盖

智能AI在工地安全中的应用:从监测到救援的全流程实践 一、背景:高温作业下的工地安全挑战 随着夏季高温持续,工地户外作业环境面临严峻考验。工人因高温疲劳、脱水或突发疾病引发的行为异常(如晕厥、抽搐、跌倒)频发…

Spring+LangChain4j小智医疗项目

这里写目录标题 LangChain4j入门配置测试Ollama阿里云百炼平台AIService聊天记忆隔离聊天 MongoDB持久化存储Prompt*创建小智医疗助手Function Calling(Tools)实战小智医疗智能体 RAGToken分词器向量存储流式输出总结 LangChain4j入门 LangChain4j 是一…

解决“VMware另一个程序已锁定文件的一部分,进程无法访问“

问题描述 打开VMware里的虚拟机时,弹出"另一个程序已锁定文件的一部分,进程无法访问"如图所示: 这是VM虚拟机的保护机制。虚拟机运行时,为防止数据被篡改,会将所运行的文件保护起来。当虚拟机崩溃或者强制…

buuctf Crypto-鸡藕椒盐味1

1.题目: 公司食堂最新出了一种小吃,叫鸡藕椒盐味汉堡,售价八块钱,为了促销,上面有一个验证码,输入后可以再换取一个汉堡。但是问题是每个验证码几乎都有错误,而且打印的时候倒了一下。小明买到了一个汉堡&a…

FreeRTOS的学习记录(基础知识)

FreeRTOS 简介 FreeRTOS 是一个开源的实时操作系统(RTOS),专为嵌入式系统设计。它提供了任务管理、时间管理、信号量、消息队列、内存管理等功能,适用于资源受限的微控制器。 FreeRTOS 是一个开源的实时操作系统内核&#xff0c…

会议分享|高超声速流动测量技术研讨会精彩探析

由中国空气动力学会测控专业委员会主办,中国科学技术大学工程科学学院承办的第八届三次委员会暨高超声速流动测量技术研讨会,5月16日在合肥盛大开幕。 会议专家报告分享了高超声速流动测量的最新研究成果、挑战与突破,展示了PIV高速摄像机、粒…

1-10 目录树

在ZIP归档文件中,保留着所有压缩文件和目录的相对路径和名称。当使用WinZIP等GUI软件打开ZIP归档文件时,可以从这些信息中重建目录的树状结构。请编写程序实现目录的树状结构的重建工作。 输入格式: 输入首先给出正整数N(≤104)…

Unix/Linux | A Programming Guide

注:本文为 “UNIX / Linux 教程” 相关文章合辑。 略作重排,如有内容异常,请看原文。 UNIX / Linux Tutorial for Beginners: Learn Online in 7 days By : Emily Carter UpdatedFebruary 5, 2025 UNIX / Linux Tutorial Summary Linux …

前端——布局方式

普通流(标准流) 所谓的标准流: 就是标签按照规定好默认方式排列. 1. 块级元素会独占一行,从上向下顺序排列。 常用元素:div、hr、p、h1~h6、ul、ol、dl、form、table 2. 行内元素会按照顺序,从左到右顺序排列&am…

Multimodal models —— CLIP,LLava,QWen

目录 CLIP CLIP训练 CLIP图像分类 CLIP框架 Text Enocder Image Encoder LLava系列 LLava LLava贡献 LLava模型结构 总结 LLava两阶段训练 LLava 1.5 LLava 1.6 QWen CLIP CLIP是OpenAI 在 2021 年发布的,最初用于匹配图像和文本的预训练神经网络模型…

LabVIEW与PLC通讯程序S7.Net.dll

下图中展示的是 LabVIEW 环境下通过调用S7.Net.dll 组件与西门子 PLC 进行通讯的程序。LabVIEW 作为一种图形化编程语言,结合S7.Net.dll 的.NET 组件优势,在工业自动化领域中可高效实现与 PLC 的数据交互,快速构建工业监控与控制应用。相较于…

使用GpuGeek高效完成LLaMA大模型微调:实践与心得分享

使用GpuGeek高效完成LLaMA大模型微调:实践与心得分享 🌟嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 随着大模型的发展&#xff0…

华为IP(6)

VLAN聚合 VLAN聚合产生的技术背景 在一般是三层交换机中,通常采用一个VLAN接口的方式实现广播域之间的互通,这在某些情况下导致了IP地址的浪费 因为一个VLAN对应的子网中,子网号、子网广播地址、子网网关地址不能用作VLAN内的主机IP地址&a…