MySQL中文字编码utf8mb4中Collation说明
在MySQL中,之前大家都用UTF8编码,不过最新的MySQL放弃了对UTF8
的更新,UTF8
只支持三位字符。新追加的utf8mb4
支持四位UTF8
。
下面对utf8mb4
常用的Collation
进行比较。其实Collation
只是影响字符集的排序和查询。这次主要介绍以下几个Collation
。
- utf8mb4_general_ci
- utf8mb4_unicode_ci
- utf8mb4_unicode_520_ci
- utf8mb4_bin
utf8mb4_general_ci
不区分大小写,不区分一些四位字符,区分日语的清音、浊音和半浊音
A = a 不区分
🍣 = 🍺 不区分
は≠ぱ≠ば 区分
utf8mb4_unicode_ci
不区分大小写,不区分一些四位字符,不区分日语的清音、浊音和半浊音
A = a 不区分
🍣 = 🍺 不区分
は≠ぱ≠ば 不区分
utf8mb4_unicode_520_ci
不区分大小写,区分四位字符,不区分日语的清音、浊音和半浊音
A = a 不区分
🍣 = 🍺 区分
は≠ぱ≠ば 不区分
utf8mb4_bin
因为是以二进制比较,所以区分大小写,区分四位字符,区分日语的清音、浊音和半浊音
A = a 区分
🍣 = 🍺 区分
は≠ぱ≠ば 区分
总结
打个比较,如果我们使用utf8mb4_unicode_ci
,那么我们使用下面这两个SQL查询的结果是一样的。
select test_table where col = 'A';
select test_table where col = 'a';
所以说,需要严格匹配的字符串字段(比如ID字段),我们应该使用utf8mb4_bin
。
对于不区别大小写等字段我们可以使用其它的Collation
。