如何让MySQL对字符匹配更加严格?
我的意思的一个简单例子,说我有一个单列`name`的表。在本专栏中,我有两个名字:'Jorge'和'Jorgé'这些名称之间的唯一区别是'在e上。如果我运行查询SELECT * FROM table WHERE name = 'Jorge'
,它将返回
+--------+
| name |
+--------+
| Jorge |
| Jorgé |
+--------+
如果我运行查询SELECT * FROM table WHERE name = 'Jorgé'
,它将返回相同的结果表。我如何将MySQL设置为更严格,以便它不会返回两个名称?
非常感谢。
快速编辑:我正在使用UTF-8字符编码
答案 0 :(得分:2)
如果您想确保没有类似的字符(例如e
和é
)被认为是相同的,那么您应该在该列上使用utf8_bin
归类。我假设您现在正在使用utf8_general_ci
,这会考虑一些相似的字符。 utf8_bin
仅匹配完全相同的字符。
答案 1 :(得分:1)
@ G-Nugget是正确的,但既然您正在查看西班牙文的内容,您可能也会对 utf8_spanish_ci 或 utf8_spanish2_ci 感兴趣。它们符合现代和传统的西班牙语。 “ñ”被认为是一个单独的字母,在传统中,“ch”和“ll”也被视为单独的字母。
更多信息:http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html