我正在寻找一个字符集/排序规则,当我做一个
SELECT * FROM table_name WHERE username = "Warrior"
它只返回用户名 = "Warrior"、"warrior" 或 "WARRIOR" 的行,而不是 "WÂRRÎOR" "Wârrîor" 等。
我找到了一个部分解决方案,通过将 Charset 更改为“utf8mb4”并将排序规则更改为“utf8mb4_bin”,现在它似乎区分了重音,它将“Wârrîor”与“Warrior”区分开来,但它也区分大小写,所以“Warrior”是不同的而不是我想要的“战士”。
我尝试了不同的排序规则,但我无法让一个完全按照我的意愿去做。有任何想法吗 ?
以下是“utf8mb4”字符集中可供我使用的不同排序规则的屏幕截图:
你可以使用:
as
表示区分重音,ci
表示不区分大小写演示:
这可以让您看到什么会比较相等,什么不会:
(警告:这些取自特定版本;可用的排序规则确实会改变,但排序规则不会改变。)
大多数,也许不是全部,_ci 和 _ai_ci 排序规则将处理 "Wârrîor" = "Warrior"
所有 _ci 或 _ai_ci 排序规则都将处理 "WARRIOR" = "Warrior"