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'(与上面结果不同)
相关推荐
倔强的石头_18 小时前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou642 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
于眠牧北2 天前
MySQL的锁类型,表锁,行锁,MVCC中所使用的临键锁
mysql
李广坤3 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
Turnip12024 天前
深度解析:为什么简单的数据库"写操作"会在 MySQL 中卡住?
后端·mysql
爱可生开源社区4 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1774 天前
《从零搭建NestJS项目》
数据库·typescript
加号35 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏5 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐5 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端