Использование MySQL MATCH для смешивания типов столбцов без учета регистра - PullRequest
3 голосов
/ 10 августа 2009

Я использую условие MATCH для сопоставления с полем int и полем varchar. Согласно http://bugs.mysql.com/bug.php?id=22343 при смешивании двоичных и недвоичных типов столбцов совпадение становится двоичным и, таким образом, чувствительным к регистру.

Мой вопрос: как мне сделать поиск не чувствительным к регистру? Я попытался использовать MATCH (ниже (a), b) ПРОТИВ ('название'), но это не работает.

Вот схема, которую можно использовать в качестве теста.

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 Ответ

2 голосов
/ 10 августа 2009

Полагаю, вам нужно сделать:

SELECT *
FROM `foo`
WHERE MATCH(`a`) AGAINST ('title' IN BOOLEAN MODE)
OR MATCH(`b`) AGAINST ('title' IN BOOLEAN MODE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...