代码之家  ›  专栏  ›  技术社区  ›  Ryan White

在不区分大小写的情况下使用MySQL MATCH混合列类型

  •  3
  • Ryan White  · 技术社区  · 16 年前

    我使用匹配条件来匹配int字段和varchar字段。根据 http://bugs.mysql.com/bug.php?id=22343 当混合二进制和非二进制列类型时,匹配将变为二进制,因此区分大小写。

    下面是一个可以用作测试的模式。

    CREATE TABLE IF NOT EXISTS `foo` (
      `a` int(11) NOT NULL,
      `b` varchar(50) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    
    INSERT INTO `foo` (`a`, `b`) VALUES
    (2345345, 'title and volume'),
    (145344, 'Volume'),
    (1234214, 'Title');
    
    SELECT * FROM `foo` WHERE MATCH (a,b) AGAINST ('title' IN BOOLEAN MODE)
    
    1 回复  |  直到 16 年前
        1
  •  2
  •   chaos    16 年前

    我想你必须:

    SELECT *
    FROM `foo`
    WHERE MATCH(`a`) AGAINST ('title' IN BOOLEAN MODE)
    OR MATCH(`b`) AGAINST ('title' IN BOOLEAN MODE)