MySQL 对主键区分大小写

Posted

技术标签:

【中文标题】MySQL 对主键区分大小写【英文标题】:MySQL case sensitivity for primary key 【发布时间】:2013-03-19 04:37:02 【问题描述】:

mysql 主键值是否区分大小写?如果这是一个选项,我该如何设置?我希望该表能够将“www.Example.com”和“www.example.com”存储为不同的值。

【问题讨论】:

你尝试的时候发生了什么? 它给了我一个重复的主键错误,但我在一个查询中多次插入到表中。所以我相信它认为这两个条目是相同的。这是我需要知道如何改变的。 【参考方案1】:

BINARY 关键字可以解决问题,但我不确定这是否是推荐的方法:

CREATE TABLE testpk (MyPK VARCHAR(20) BINARY PRIMARY KEY NOT NULL)

【讨论】:

【参考方案2】:

您可以在 MySQL 中设置每列排序规则:https://dev.mysql.com/doc/refman/5.5/en/charset-column.html

例如如果您的表格通常(例如)不区分大小写,则可以按字段覆盖它以区分大小写。

【讨论】:

那么我是否正确理解“utf8_general_ci”很可能意味着它不区分大小写?如果那是真的,我应该使用二进制排序规则吗? 是的。 ci 不区分大小写。但有utf8_general_cs 区分大小写。 我收到了Unknown collation: 'utf8_general_cs'。这是我使用的 MySQL 版本的问题吗? (5.1)

以上是关于MySQL 对主键区分大小写的主要内容,如果未能解决你的问题,请参考以下文章

MySQL—设置数据库(库、表等)不区分大小写

Oracle中不区分大小写的主键

nvarchar 类型的不区分大小写的主键,其中 ß != ss

为啥 mysql 区分大小写

Java UUID是不是区分大小写

Java UUID是不是区分大小写