2009-08-10 29 views
3

我正在使用MATCH條件來匹配int字段和varchar字段。根據http://bugs.mysql.com/bug.php?id=22343混合二進制和非二進制列類型時,匹配變爲二進制,因此區分大小寫。在不區分大小寫的情況下使用MySQL MATCH混合列類型

我的問題是我將如何去使搜索不區分大小寫?我嘗試過使用MATCH(lower(a),b)AGAINST('title'),但這不起作用。

這是一個可用作測試的模式。

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) 

回答

2

我猜你必須做的:

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

拋出一個語法錯誤。類似於我試圖做LOWER(a) – 2009-08-10 01:15:09

+0

這很刺激。我想你必須分手那個'MATCH'。 – chaos 2009-08-10 01:32:04

+0

我之前看過分手比賽會奏效。在我上面的測試中,它仍然區分大小寫,這是沒有意義的。 – 2009-08-10 03:28:42

相關問題