Mysql字符串字段查询默认大小写不敏感

MySQL默认对于字符串类型字段的查询大小写不敏感,比如字段值为ABC,你查询WHERE COL='abc' 也能够查询到。

MySQL的这个行为大多数情况下问题不大,这个行为对于查询来说是很便利的,比如你可以直接LIKE 'a%' 就能够查询到ABC

但是要注意,如果你有一个UNIQUE的字段,那么在插入A0001a0001的时候,会告诉你违反唯一约束。

如果你的UNIQUE字段在业务上需要通过大小写来区分,那么你需要在建表时给字段添加上CHARACTER SET utf8 COLLATE utf8_bin NOT NULL UNIQUE,比如:

1
2
3
CREATE TABLE WORDS (
    WORD VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL UNIQUE, 
);

如果你的UNIQUE字段在业务上不需要/不应该通过大小写来区分,那么就什么都不需要做,因为在这种业务下,a0001可以认为是一种错误数据。

参考资料:

https://stackoverflow.com/questions/6448825/sql-unique-varchar-case-sensitivity-question

版权

评论