Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL中强制区分大小写的问题_Mysql_Database - Fatal编程技术网

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

MySQL中强制区分大小写的问题,mysql,database,Mysql,Database,我知道MySQL默认不区分大小写。 我还阅读了有关使用排序规则utf8_general_cs启用区分大小写的内容。但是我得到一个错误,说排序规则没有被识别。此外,当我查询字符集utf8的排序规则时,结果集仅显示与ci相关的排序规则。所以问题1是,我们需要配置cs相关的排序规则吗?如果是的话,那么我想得到一些指导。或者它依赖于某个特定的数据库引擎 我还了解了如何使用utf8_-bin排序规则使MySQL查询搜索区分大小写。我这样做了。将架构排序规则设置为utf8\u bin。但它不起作用。重新启动

我知道MySQL默认不区分大小写。 我还阅读了有关使用排序规则utf8_general_cs启用区分大小写的内容。但是我得到一个错误,说排序规则没有被识别。此外,当我查询字符集utf8的排序规则时,结果集仅显示与ci相关的排序规则。所以问题1是,我们需要配置cs相关的排序规则吗?如果是的话,那么我想得到一些指导。或者它依赖于某个特定的数据库引擎

我还了解了如何使用utf8_-bin排序规则使MySQL查询搜索区分大小写。我这样做了。将架构排序规则设置为utf8\u bin。但它不起作用。重新启动MySQL服务,以确保已更新排序规则。但是,当我做一个

 Select * from table where name like 'el%';
它的名字也以“EL”开头

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

我以为它正常工作?! 无论如何,如果这是一个局部问题,有几种解决方案: 主要可以使用一个
SELECT*从用户名为REGEXP'^[E][P]*$'
的用户处选择正则表达式。 替代方案
当然,您必须通过另一种语言包装来访问它,以实现自动化或处理,而不是MySQL控制台,对吗?我建议使用您用于包装器的语言对其进行排序,这很容易实现。但是,仍然只处理那些从
el
开始的排序,因为这将减少要检查的内容。

列排序优先于数据库和表排序。如果您一直在进行更改,则可能您的列当前正在使用创建表时的默认值。您应该能够使用适当的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;
(演示)

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


我的项目都是西班牙语的,所以我经常使用
utf8mb4\u西班牙语\u ci

嘿..我正在使用hibernate编写查询。。基本上,条件查询..因此可以使用yes正则表达式..但这会使代码变脏..我希望模式中所有表的表数据都区分大小写,因为如果数据不区分大小写,则唯一值不会是唯一的..例如,实例注册id a101和a101都将被允许..再次举个例子。所以我需要数据库数据区分大小写。当然,这在应用程序上是固定的-检查它是否在文件中,如果不在文件中,那么你可以继续,否则就不行了。但是我在这里建议使用一个由MySQL服务器唯一设置的id-每次递增-并为电子邮件或用户名设置一个字段(显然要检查此字段),那么现在你就不会有不同的id了,然后为了用户名安全-确保它们相同-你可以像discord一样使用用户名和id?除此之外,我一点也不知道。我仍然不明白为什么仅仅检查查询的结果是不起作用的?。非常感谢您在优先级部分的提醒。我可以让事情正常进行!