如果查询只是在这种特殊情况下完全匹配,我该如何进行查询:
MONÃE
只应点击MONÃE
,而不是MONÁE
目前在搜索MONÁE
时要求*吐出包含MONÃE
的行。我的校对是utf8_unicode_ci
- 因此我猜测它允许基于此的命中。有没有办法为特定查询关闭排序规则?在某些情况下,我希望直接命中,而其他一些我希望它无论重音都能击中。
我认为这是关于COLLATE utf8_bin的问题,但在WHERE IN查询中使用时似乎会抛出错误,例如......
这有效:
SELECT * FROM `myTable` WHERE (col1,col2) IN ($mySubQuery)
这失败了;
SELECT * FROM `myTable` WHERE (col1,col2) IN ($mySubQuery) COLLATE utf8_bin
以下是我可能获得的实际查询示例(减去整理) - 此查询正常工作:
SELECT `bookID`
FROM `books`
WHERE (Author,Title)
IN (("James Author","My Great Life"))
可以在某处进行整理吗?以下失败:
SELECT `bookID`
FROM `books`
WHERE (Author,Title)
COLLATE utf8_bin
IN (("James Author","My Great Life"))
感谢您的时间和帮助。
答案 0 :(得分:4)
您需要将COLLATE
规范附加到您要搜索的每个列,例如:
SELECT * FROM t1 WHERE c1 COLLATE utf8_bin IN('foo', 'bar');