2009-08-10 5 views
3

J'utilise une condition MATCH pour faire correspondre un champ int et un champ varchar. Selon http://bugs.mysql.com/bug.php?id=22343 lors du mélange de types de colonnes binaires et non binaires, la correspondance devient binaire et donc sensible à la casse.Utilisation de MySQL MATCH pour la combinaison de types de colonnes non sensibles à la casse

Ma question est de savoir comment je pourrais rendre la recherche non sensible à la casse? J'ai essayé d'utiliser MATCH (lower (a), b) AGAINST ('title') mais cela ne fonctionne pas.

Voici un schéma qui peut être utilisé comme test.

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) 

Répondre

2

Je suppose que vous auriez à faire:

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

Cela jette une erreur de syntaxe. Similaire à quand j'ai essayé de faire INFÉRIEUR (a) –

+0

C'est irritant. Je suppose que vous devez rompre le 'MATCH' alors. – chaos

+0

J'ai lu avant que la rupture du match ne fonctionne. Dans mon test avec ce qui précède, il est toujours sensible à la casse qui n'a pas de sens. –

Questions connexes