MySQL 英文大小写不敏感

MySQL 英文大小写不敏感,第1张

通过 show character set 命令,你查看的到的

collation 这个设置关系到 MySQL 中的 “英文字符大小写敏感” 问题。

::: tip

通过 show collation 命令,你可以查看到 MySQL 支持的所有的 collation 。

:::

这里的 _ci 指的是 Case Insensitive ,即 “大小写不敏感” 。a 和 A 会在字符判断中被当作一样。

例如,你执行 select * from department where name = 'testing' ,可能会出现以下两行数据:

治标的办法是在查询语句中使用 binary 关键字, binary 关键字可以加在两处地方(效果一样):

binary 表示的是:以字符串的二进制数据为依据进行比较,这样,比较的结果自然就是大小写敏感的。

在指定 Charset( utf8 或 utf8mb4 )时,同时指定与之配套使用的 Collation 。

通过使用命令 show collation where Charset = '...' 可以查看 utf8 和 utf8mb4 对应的 Collation 。但是,可惜的是有 _ci ,却没有 _cs <small>(Case Sensitive,大小写敏感)</small>的 Collation !

不过,有 utf8_bin 和 utf8mb4_bin 。

你可以在建库,或建表,或在列声明中使用它们。例如:

Mysql在默认条件下是无法区分字母大小写的,并且在升到了8.x之后也没有找到设置lower_case_table_names的方法(目前),这就意味着无法设置修改大小写敏感。

[图片上传失败...(image-a311b-1545128885470)]]( https://upload-images.jianshu.io/upload_images/13702036-7a23e2ed138acc34.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )

但在 stackoverflow 上找到了相应解决方案,在安装过程中,可选择高级模式,在高级模式中修改

MySQL数据库名和表名的大小写敏感说明:MySQL中的数据库名和表名和 *** 作系统有关,在windows *** 作系统中,不区分大小写,在unix ,linux *** 作系统中,是区分大小写的。其实可以到mysql存放数据的data目录下进行查看,可以知道其实一个数据库是对应表,一张表是对应一个表名+.frm的文件 。由于在windows *** 作系统中,文件名和目录名是不区分大小写的,所以MySQL数据库名和表名在windows下是大小写不敏感的,而unix,linux则不然。下面是MySQLmanual原文说明:In MySQL, databases and tables correspond to directories and files within those directories.Consequently, the case sensitivity of the underlying operating system determines the casesensitivity of database and table names. This means database and table names are casesensitive in Unix and case insensitive in Windows.列名的大小写说明:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7298839.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存