在表格中x,有一列包含值u和ü.
SELECT * FROM x WHERE column='u'.
这会返回uAND ü,虽然我只是在寻找u.
表的整理是utf8mb4_unicode_ci.无论我在哪里阅读类似的问题,每个人都建议使用这种整理,因为他们说这utf8mb4真的涵盖了所有字符.通过这种整理,应该解决所有字符集和整理问题.
我可以插入ü,è,é,à,Chinese characters,等等.当我做SELECT *,他们也检索和正确显示.
只有当我按照上面的例子(SELECT WHERE)或者在UNIQUE INDEX列上使用a 来比较两个字符串时,才会出现此问题.当我使用时UNIQUE INDEX,"ü"当我已经"u"在列中时,没有插入a .因此,当SQL进行比较u并且ü为了确定ü是否是唯一的时,它认为它是相同的u并且不插入ü.
我改变了一切,utf8mb4因为我不想再担心字符集和整理了.但是,utf8mb4当涉及到比较字符串时,它似乎不是解决方案.
我也试过这个:
SELECT * FROM x WHERE _utf8mb4 'ü' COLLATE utf8mb4_unicode_ci …