1

只有在这种特殊情况下完全匹配时,我才能进行查询命中:

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"))

感谢您的时间和帮助。

4

1 回答 1

4

您需要将COLLATE规范附加到您正在搜索的每一列,例如:

SELECT * FROM t1 WHERE c1 COLLATE utf8_bin IN('foo', 'bar');
于 2013-09-14T11:49:19.650 回答