我知道 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/