繁体   English   中英

带有COLLATE和MATCH的MySQL SELECT语句

[英]MySQL SELECT statement with COLLATE and MATCH

有什么方法可以在同一查询字符串中指定COLLATEMATCH() AGAINST() 我正在努力做到这一点。

SELECT * FROM table  WHERE COLLATE latin1_general_cs MATCH(column) AGAINST('string')

我知道这行不通,只是一个例子。 如果COLLATEMATCH不兼容。 如何在每个查询中指定区分大小写,因为我需要区分大小写和不区分大小写的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM