在回答这个问题时,我对某些我无法找到足够答案的事情感到不确定.
使用二进制文件utf8_bin和不区分大小写的utf8_general_ci排序规则之间有什么实际区别?
我可以看到三个:
两者都有不同的排序顺序; _bin排序顺序可能会将任何变音符号放在字母表的末尾,因为字节值会被比较(对吗?)
只有区分大小写的搜索 _bin
没有A = Ä平等_bin
是否还有其他差异或副作用需要注意?
参考:
类似的问题没有解决这个问题:
我创建了一个表并将排序规则设置为utf8,以便能够为字段添加唯一索引.现在我需要进行不区分大小写的搜索,但是当我使用collate关键字执行一些查询时,我得到了:
mysql> select * from page where pageTitle="Something" Collate utf8_general_ci;
Run Code Online (Sandbox Code Playgroud)
ERROR 1253(42000):COLLATION'utf8_general_ci'对CHARACTER SET'latin1'无效
mysql> select * from page where pageTitle="Something" Collate latin1_general_ci;
Run Code Online (Sandbox Code Playgroud)
ERROR 1267(HY000):操作'='的非法混合排序(utf8_bin,IMPLICIT)和(latin1_general_ci,EXPLICIT)
我对SQL很新,所以我想知道是否有人可以提供帮助.
mysql sql case-sensitive character-encoding mysql-error-1267
我的表校对是"utf8_general_ci".如果我运行如下查询:
SELECT * FROM mytable WHERE myfield = "FÖÖ"
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
... myfield = "FÖÖ"
... myfield = "FOO"
Run Code Online (Sandbox Code Playgroud)
这是"utf8_general_ci"的默认值吗?
我应该使用什么整理来获取myfield ="FÖÖ"的记录?
我正在寻找UTF8的MySQL排序规则,它不区分大小写并区分"a"和"ä"(或更一般地说,在umlauted/accented字符和它们的"纯"形式之间).utf8_general_ci前者,utf8_bin后者,机器人都没有.如果没有这样的整理,我该怎样做才能在WHERE条款中尽可能接近?