mysql - 在 MySQL 中强制区分大小写的问题

标签 mysql database

我知道 MySQL 默认不区分大小写。 我还阅读了有关使用排序规则 utf8_general_cs 启用区分大小写的信息。但是我收到一条错误消息,指出未识别排序规则。此外,当我查询 charset utf8 的排序规则时,结果集仅显示与 ci 相关的排序规则。所以第 1 个问题是,我们是否需要配置与 cs 相关的排序规则?如果是这样,那么我想要一些指导。或者它是否依赖于某些特定的数据库引擎?

我还阅读了有关使用 utf8_bin 排序规则使 MySQL 查询搜索区分大小写的信息。我这样做了。将架构排序规则设置为 utf8_bin。但它没有用。还重新启动了 MySQL 服务以确保排序规则已更新。但是,当我做一个

 Select * from table where name like 'el%';

它给出的名称也以“EL”开头。

注意:我最好寻找在数据库级别设置排序规则的选项。 MySQL 服务器版本 5.6.x

最佳答案

列排序规则优先于数据库和表排序规则。如果您一直在进行更改,则您的列当前可能使用的是创建表时的默认值。您应该能够使用适当的 SQL 工具或通过运行来发现它:

SELECT table_schema, column_name, collation_name
FROM information_schema.columns
WHERE table_schema = 'your database name'
AND table_name = 'your table name'

如果您不愿意更改列排序规则,可以在表达式级别进行设置:

SELECT *
FROM foo
WHERE bar LIKE 'el%' COLLATE utf8mb4_0900_as_cs;

(演示)

归类会影响排序和字符比较,因此您必须 read some docs找出最适合您需求的一个(如果您不是 Unicode 极客,这并不简单)。

我的项目都是西类牙语,所以我倾向于大量使用 utf8mb4_spanish_ci ;-)

关于mysql - 在 MySQL 中强制区分大小写的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53088323/

相关文章:

database - access - 仅附加唯一结果

javascript - 将文本 block 添加到 MySQL 数据库

sql - 使用交叉连接和在两个表之间放置逗号有什么区别?

mysql - Openshift 中 RoR Mysql 部署的问题

mysql - 我需要哪些索引来通过 Laravel Eloquent 提高 mysql 查询性能

MYSQL 错误 - 写入或更新时重复键

php - 从 mysql 查询中打印随机行

mysql - 计算产品的总值(value)

mysql - 插入查询优化

php - MYSQL:查询以获取上一个和下一个视频 ID?