mysql如何强制区分大小写

SELECT distinct name FROM users 这样SELECT distinct name 如何强制区分大小写呢?

bash 复制代码
SELECT DISTINCT BINARY name FROM users;

mysql的where条件的=号是不区分大小写的吗

-- 强制区分大小写,无论字段默认校对规则如何

bash 复制代码
SELECT * FROM users WHERE BINARY name = 'Alice'; -- 只匹配 'Alice'

默认情况下(大多数场景),不区分大小写常见的字符集(如 utf8、utf8mb4)默认使用的校对规则是 ci 结尾的(ci = Case Insensitive,不区分大小写),例如 utf8_general_ci、utf8mb4_general_ci。此时,= 比较会忽略大小写,例如:

bash 复制代码
-- 假设 name 字段的校对规则是 utf8_general_ci
SELECT * FROM users WHERE name = 'Alice';
SELECT * FROM users WHERE name = 'alice'; -- 与上面查询结果相同

如果使用 bin 结尾的校对规则,则区分大小写若字段的校对规则是 bin 结尾的(bin = Binary,二进制比较),例如 utf8_bin、utf8mb4_bin,则 = 会严格区分大小写,因为它比较的是字符的二进制编码(不同大小写的字符二进制值不同)。例如:

bash 复制代码
-- 假设 name 字段的校对规则是 utf8_bin
SELECT * FROM users WHERE name = 'Alice'; -- 只匹配 'Alice'
SELECT * FROM users WHERE name = 'alice'; -- 只匹配 'alice'(与上面结果不同)
相关推荐
余槐i5 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
数据库小学妹5 小时前
PostgreSQL表膨胀怎么办?autovacuum清不动的根因与排查命令
数据库·postgresql·表膨胀·mvcc·数据库运维
mister_guo5 小时前
MySQL-1267错误:排序规则冲突的原因与解决方案
数据库·mysql
骇客野人6 小时前
在麒麟操作系统上 分别安装 jdk1.8, 达梦数据库,redis ,memcache 的操作实施方案和步骤
数据库·redis·memcached
美狐美颜SDK开放平台8 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
Lost_the_wind8 小时前
MySQL学习笔记五
mysql
花间相见9 小时前
【计算基础|MySQL01】【上手】安装连接、数据类型与建库建表
数据库·后端
花间相见9 小时前
【计算基础|MySQL02】【上手】SQL 增删改查
数据库·后端
ITxiaobing202310 小时前
IP 库与 AppsFlyer 国家/地区数据不一致,如何系统地对账?
数据库·网络协议·tcp/ip
这个DBA有点耶10 小时前
从时间到语义:时序数据库与向量数据库的核心机制、选型与多模融合趋势
数据库·mysql·架构