2009-08-10 5 views
3

Ich verwende eine MATCH-Bedingung, um mit einem int-Feld und einem Varchar-Feld übereinzustimmen. Gemäß http://bugs.mysql.com/bug.php?id=22343 wird beim Mischen binärer und nicht-binärer Spaltentypen die Übereinstimmung binär und damit die Groß- und Kleinschreibung berücksichtigt.Verwenden von MySQL MATCH für Mischung von Spaltentypen in nicht-case-sensitive

Meine Frage ist, wie würde ich gehen, um die Suche nicht-Groß-und Kleinschreibung zu machen? Ich habe versucht, MATCH (niedriger (a), b) AGAINST ('Titel') zu verwenden, aber das funktioniert nicht.

Hier ist ein Schema, das als Test verwendet werden kann.

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) 

Antwort

2

Ich glaube, Sie würden zu tun haben:

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

dass ein Syntaxfehler führt. Ähnlich wie wenn ich versuchte, LOWER (a) –

+0

Das ist irritierend. Ich denke, du musst dann die "MATCH" auflösen. – chaos

+0

Ich habe gelesen, dass das Aufteilen des Spiels funktionieren würde. In meinem Test mit dem obigen ist es immer noch Groß-und Kleinschreibung, die keinen Sinn macht. –