平时非常少会考虑数据存储须要明白字符串类型字段的大写和小写,MySQL默认的查询也不区分大写和小写。但作为用户信息。一旦username反复,又会浪费非常多资源。再者,李逵、李鬼的多起来。侦辨起来非常困难。
要做到这一点,要么在建表时。明白大写和小写敏感(字段明白大写和小写敏感)。
假设通盘数据库全部字段都须要大写和小写敏感。不如在字符集设置时做好调整。只是,通常不建议这么做。
假设跟我一样。数据库已经在线上跑了,一个表上百万条数据。做字段类型变更有可能导致数据库宕机。
那么好吧,在查询时,多加个单词好了。
比如,一般查询:
SELECT * FROM `user` WHERE name LIKE 'a%';
SELECT * FROM `user` WHERE name LIKE 'A%';
其结果是一样的,为了区分'A%'和'a%'。能够这么做:
SELECT * FROM `user` WHERE binary name LIKE 'a%';
SELECT * FROM `user` WHERE binary name LIKE 'A%';
只多了一个binary,就能够得到不同的结果。
当然,假设须要建表时强制区分大写和小写,能够这么写:
create table `user`(
name varchar (20) binary
);
转载于:
平时非常少会考虑数据存储须要明白字符串类型字段的大写和小写,MySQL默认的查询也不区分大写和小写。但作为用户信息。一旦username反复,又会浪费非常多资源。再者,李逵、李鬼的多起来。侦辨起来非常困难。
要做到这一点,要么在建表时。明白大写和小写敏感(字段明白大写和小写敏感)。
假设通盘数据库全部字段都须要大写和小写敏感。不如在字符集设置时做好调整。只是,通常不建议这么做。
假设跟我一样。数据库已经在线上跑了,一个表上百万条数据。做字段类型变更有可能导致数据库宕机。
那么好吧,在查询时,多加个单词好了。
比如,一般查询:
SELECT * FROM `user` WHERE name LIKE 'a%';
SELECT * FROM `user` WHERE name LIKE 'A%';
其结果是一样的,为了区分'A%'和'a%'。能够这么做:
SELECT * FROM `user` WHERE binary name LIKE 'a%';
SELECT * FROM `user` WHERE binary name LIKE 'A%';
只多了一个binary,就能够得到不同的结果。
当然,假设须要建表时强制区分大写和小写,能够这么写:
create table `user`(
name varchar (20) binary
);