好吧,所以我有一个非常奇怪的错误。
说我有字符串“ÖnÅsaÄppleföllnerssjön”
query |result
Ön |Found
ÖN |Found
ön |Found
<same pattern works with Åsa and Äpple as well>
föll |Found
Föll |Found
FÖLL |Not found
这对我没有任何意义。清楚地搜索首都ÅÄÖ的作品,但出于某种原因,当ÅÄÖ字符不是单词的第一个字母时?
我有一个Rails应用程序和一个MYSQL数据库。 这是相应的代码:
dataset = DB[category_class.table_name.to_sym]
dataset = dataset.where(:headline.ilike("%" + headline + "%")) if headline.present?
我非常感谢任何能够帮助我找到解决问题的正确方向的评论或答案。
问候,埃米尔
答案 0 :(得分:0)
这可能与utf8_unicode_ci
排序规则比较字符串的方式有关。 排序规则是一组规则,用于确定两个字符串何时被视为“相同”,何时不是;它还确定了字符串的排序顺序。
要查看utf8
字符集的排序规则,请发出SHOW COLLATION LIKE 'utf8'
。您将看到有各种特定于语言的排序规则。这些不限制您可以存储在列*
中的值,而是强制针对预期主要使用特定语言的文本定制的字符串比较规则。或者,您可以使用完全忽略重音的utf8_general_ci
归类。
*
虽然如果涉及唯一密钥,它们可能会改变一个值是否被认为是另一个值的重复。