【问题标题】:MySQL SELECT statement with COLLATE and MATCH带有 COLLATE 和 MATCH 的 MySQL SELECT 语句
【发布时间】:2013-01-02 15:20:13
【问题描述】:

有没有办法在同一个查询字符串中指定COLLATEMATCH() AGAINST()。我正在努力解决这个问题。

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

我知道这行不通,只是一个例子。 如果COLLATE 不能与MATCH 一起使用。如何在每个查询中指定区分大小写,因为我需要区分大小写和不区分大小写的 MATCH() AGAINST() 查询。

【问题讨论】:

    标签: mysql select match match-against collate


    【解决方案1】:

    不,很遗憾

    虽然在单个表中使用多个字符集是 支持,FULLTEXT 索引中的所有列必须使用相同的字符 设置和整理。

    全文MATCH() AGAINST语法上没有修饰符来指定排序规则。

    http://dev.mysql.com/doc/refman/5.0/en/fulltext-restrictions.html

    您可以使用不同的排序规则维护column 列的副本。

    【讨论】:

      【解决方案2】:

      我想出了如何做到这一点。 就像@Ollie Jones 说的那样,我将所有数据复制到一个新列中,并带有区分大小写的排序规则。在我的情况下latin1_general_cs

      但是因为FULLTEXT 索引不能有混合排序规则。必须有 2 个FULLTEXT 索引。一个在不区分大小写的列 (latin1_general_ci),一个在区分大小写的列 (latin1_general_cs)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-16
        • 2015-01-21
        • 2021-03-13
        • 2015-03-25
        • 2011-11-24
        相关资源
        最近更新 更多