[英]MySQL SELECT statement with COLLATE and MATCH
有什么方法可以在同一查询字符串中指定COLLATE
和MATCH() AGAINST()
。 我正在努力做到这一点。
SELECT * FROM table WHERE COLLATE latin1_general_cs MATCH(column) AGAINST('string')
我知道这行不通,只是一个例子。 如果COLLATE
与MATCH
不兼容。 如何在每个查询中指定区分大小写,因为我需要区分大小写和不区分大小写的MATCH() AGAINST()
查询。
不,很不幸
尽管支持在单个表中使用多个字符集,但FULLTEXT索引中的所有列都必须使用相同的字符集和排序规则。
全文MATCH() AGAINST
语法上没有修饰符可指定排序规则。
http://dev.mysql.com/doc/refman/5.0/en/fulltext-restrictions.html
您可以使用不同的排序规则维护column
列的副本。
我想出了怎么做。 就像@Ollie Jones所说的那样,我将所有数据复制到一个新的列中,并区分大小写。 在我的情况下latin1_general_cs
。
但是因为FULLTEXT
索引不能具有混合排序规则。 必须有2个FULLTEXT
索引。 一个不区分大小写的列( latin1_general_ci
),另一个不区分大小写的列( latin1_general_cs
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.