在表格中x
,有一列包含值u
和ü
.
SELECT * FROM x WHERE column='u'
.
这会返回u
AND ü
,虽然我只是在寻找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 …