表格查询:
CREATE TABLE `TESTING_TABLE` (
`ID` char(36) COLLATE utf8_bin NOT NULL,
`NAME` char(36) COLLATE utf8_bin NOT NULL,
`DISPLAY_NAME` varchar(128) COLLATE utf8_bin NOT NULL,
UNIQUE KEY `DISPLAY_NAME_UK` (`NAME`,`DISPLAY_NAME`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
第一行插入:
INSERT INTO `TESTING_TABLE` (`ID`, `NAME`, `DISPLAY_NAME`) VALUES ('1', 'Foo', 'Bar');
第二行插入:
INSERT INTO `TESTING_TABLE` (`ID`, `NAME`, `DISPLAY_NAME`) VALUES ('2', 'Foo', 'bar');
我有' DISPLAY_NAME_UK'唯一约束,我希望第二行插入应该抛出一个"重复条目"例外。但它允许DISPLAY_NAME列中的区分大小写的值。如何使其不区分大小写?
答案 0 :(得分:2)
将utf8_bin替换为utf8_general_ci
CREATE TABLE `TESTING_TABLE` (
`ID` char(36) COLLATE utf8_bin NOT NULL,
`NAME` char(36) COLLATE utf8_bin NOT NULL,
`DISPLAY_NAME` varchar(128) COLLATE utf8_general_ci NOT NULL,
UNIQUE KEY `DISPLAY_NAME_UK` (`NAME`,`DISPLAY_NAME`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
答案 1 :(得分:1)
如果你想要" bar"和" Bar"被视为相同的值,这不是灵敏度,它的情况不敏感。
最简单的方法可能是使用不区分大小写的排序规则,例如utf8mb4
。