问题描述
几个关于mysql的小问题
1.线上搜索需求大小写不敏感,但搜索的结果是大小写分开展示。
2.mysql保存繁体字时存入数据库的字与想要保存的字不同。
问题1 大小写敏感:
搜索结果在代码层面没有进行处理,于是怀疑Mysql的问题。
做个实验:直接使用客户端用sql查询数据库,发现搜索结果的确是区分大小写。
通过查询资料发现需要设置表的collate(校对)规则。
collate规则:
- _bin: 表示的是binary case sensitive collation,也就是说是区分大小写的
- _cs: case sensitive collation,区分大小写
- _ci: case insensitive collation,不区分大小写
看了一下,对应字段的排序规则是大小写敏感的utf8mb4_bin,utf8mb4对应的排序字符集常用的有 utf8mb4_unicode_ci、utf8mb4_general_ci,这里选用了utf8_general_ci