mysql 字符类型大小写_MySQL中utf8字符集、排序规则及utf8mb4_bin列大小写不敏感方法...

utf8mb4 和 utf8 比较

utf8mb4: A UTF-8 encoding of the Unicode character set using one to four bytes per character.

utf8mb3: A UTF-8 encoding of the Unicode character set using one to three bytes per character.

UTF-8是使用1~4个字节,一种变长的编码格式。(字符编码 )

mb4即 most bytes 4,使用4个字节来表示完整的UTF-8。而MySQL中的utf8是utfmb3,只有三个字节,节省空间但不能表达全部的UTF-8,只能支持“基本多文种平面”(Basic Multilingual Plane,BMP)。

推荐使用utf8mb4。

utf8mb4_unicode_ci 和 utf8mb4_general_ci 比较

general_ci 更快,unicode_ci 更准确

in German and some other languages ß is equal to ss.

这种情况unicode_ci能准确判断。

具体有什么差别呢?参见下面的连接。

utf8mb4_general_ci P=p Q=q R=r=Ř=ř S=s=ß=Ś=ś=Ş=ş=Š=š sh ss sz

utf8mb4_unicode_ci P=p Q=q R=r=Ř=ř S=s=Ś=ś=Ş=ş=Š=š sh ss=ß sz

可以看到utf8mb4_general_ci中S=ß,而utf8mb4_unicode_ci中ss=ß 。

使用utf8mb4_bin可以将上面的字符区分开来。

貌似general_ci 也快不了多少,所以更推荐unicode_ci。

大小写敏感

utf8mb4_general_cs 大小写敏感

utf8mb4_bin 大小写敏感

但貌似不存在utf8_unicode_cs ,可能是算法决定的吧?

utf8mb4_bin 列大小写不敏感方法

需求

插入的时候Uman 和Umān和uman 看做不同的单词。

查询的时候Uman 和Umān和uman 都能同时查出来。

解决方案

create table test_utf8_bin_ci

( u8 varchar(50) charset utf8mb4 collate utf8mb4_unicode_ci,

u8_bin_ci varchar(50) charset utf8mb4 collate utf8mb4_bin as (lower(u8)) unique

);

insert into test_utf8_bin_ci (u8)

values ('A'),('Ä'),('Å'),('Â'),('Á'),('À');

dccbd2b83175d8adc6d3f3824fcd47d5.png

根据需求,插入数据时:

Uman 和Umān 看做不同的单词,所以要utf8_bin.

Uman 和 uman看做相同的单词,所以添加unique约束,在utf8_bin区分大小写的情况下,使用low() 函数使其不区分大小写。

1e96612f88d312cf5efb7e9ed928daf8.png

查询时:

查询u8列,utf8mb4_unicode_ci不区分大小写、不区分a和ā。都能查出来。

e71fee404453f74bd1d2c909b7b72a22.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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排序规则默认是不区分大小写的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值