mysql 编码集utf8_general_ci大小写不敏感的坑

Mysql中utf8_general_ci与utf8_unicode_ci有什么区别呢?在编程语言中,通常用unicode对中文字符做处理,防止出现乱码,那么在MySQL里,为什么大家都使用utf8_general_ci而不是utf8_unicode_ci呢?

用了这么长时间,发现自己竟然不知道utf_bin和utf_general_ci这两者到底有什么区别。。

ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的;

bin 是二进制, a 和 A 会别区别对待.

例如你运行:

SELECT * FROM table WHERE txt = 'a'

那么在utf8_bin中你就找不到 txt = 'A' 的那一行, 而 utf8_general_ci 则可以.

utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。

utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果

utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容

解决方案:修改对应字段的编码集

ALTER TABLE me_article CHANGE title title VARCHAR(256) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL; 
SHOW FULL COLUMNS FROM me_article;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: MySQLutf8mb4 字符使用的是 utf8mb4_general_ci 排序规则,该排序规则是不区分大小写的。也就是说,在 utf8mb4_General_ci 排序规则下,大写字母与小写字母是相同的。 因此,如果需要在 MySQL 中区分大小写,您可以使用其他排序规则,如 utf8mb4_bin。 不过,请注意,改变排序规则可能会对已存储的数据产生影响,因此请谨慎操作。 ### 回答2: MySQLutf8mb4_general_ci排序规则默认是不区分大小写的。 在MySQL中,排序规则决定了字符的比较和排序方式。而utf8mb4_general_ci排序规则表示使用UTF-8编码进行排序,并且对大小写敏感。这意味着在使用utf8mb4_general_ci排序规则时,MySQL将不会区分字符的大小写。 例如,对于英文字符A和a,MySQL将认为它们是相等的,无论它们出现在查询条件、排序语句还是索引中,都将被视为相同的字符。 但需要注意的是,utf8mb4_general_ci排序规则是对英文字符的不区分大小写操作,对于其他一些语言或特殊字符,也许会有不同的规则。因此,在使用MySQLutf8mb4_general_ci排序规则时,仍然需要根据具体需求和数据特点来确定是否能满足需求。 如果需要进行区分大小写的排序操作,可以选择其他排序规则,比如utf8mb4_bin排序规则。utf8mb4_bin规则是大小写敏感的,对于字符的比较和排序将严格按照字符的大小写来进行操作。 综上所述,MySQLutf8mb4_general_ci排序规则默认是不区分大小写的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值