mysql - SQL唯一varchar区分大小写问题

标签 mysql sql case-sensitive varchar unique-constraint

我正在尝试使用单词列表填充 SQL 表。表格本身很简单:

CREATE TABLE WORDS(
  ID BIGINT AUTO_INCREMENT, 
  WORD VARCHAR(128) NOT NULL UNIQUE, 
  PRIMARY KEY(ID)
);

我遇到的问题是:当我执行以下背靠背插入操作时

INSERT INTO WORDS(WORD) VALUES('Seth');
INSERT INTO WORDS(WORD) VALUES('seth');

第二次插入因违反约束而失败(“Duplicate entry 'seth' for key 'WORD'”)。

如何使 WORD 上的 UNIQUE 约束区分大小写?

最佳答案

看起来mysql是case insensitive by default :

您可能需要使用区分大小写的排序规则(例如 utf8_bin)创建列:

CREATE TABLE WORDS (
    ID BIGINT AUTO_INCREMENT, 
    WORD VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL UNIQUE, 
    PRIMARY KEY(ID)
);

关于mysql - SQL唯一varchar区分大小写问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6448825/

相关文章:

sql - SQL中的交叉外键

c# - HtmlAgilityPack XPath 忽略大小写

xml - 元素名称的大小写约定?

mysql - 使用 BIT 作为 INT 以提高存储容量效率

mysql - 选择第一个词-mysql查询

java - ON DUPLICATE KEY UPDATE 的准备语句语法(参数数量错误)

php - SQL JOIN 失败的问题

php - laravel 查询生成器中的 mysql 函数

sql - 强制 DATEPART 以固定长度输出的简单方法?

mysql - mysql 8 结果行集大小写有哪些变化?