Странное поведение при выполнении LIKE с подстановочными знаками при поиске обратной косой черты в MySQL

Я столкнулся с очень необычной проблемой с MySQL, связанной с обратными косыми чертами. Обычно, когда я использую подстановочный знак с LIKE для \ n, который находится в базе данных как текст, а не как фактический перевод строки, он возвращает совпадение только в том случае, если у меня есть только подстановочный знак правой руки:

SELECT * 
FROM  `tmptest` 
WHERE  `a` LIKE  '\\\\n%'

Теперь, если я запрошу вот так , он ничего не вернет:

SELECT *  
FROM `tmptest` 
WHERE `a` LIKE '%\\\\n%'

Как видно из данных, которые у меня есть в таблице, оба запроса должны совпадать. Я не уверен, что мне чего-то не хватает, или я неправильно экранирую новую строку, но не имеет смысла, чтобы первый запрос работал, а второй - нет.

Структура таблицы:

CREATE TABLE IF NOT EXISTS `tmptest` (
`a` varchar(22) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Примеры данных:

INSERT INTO `tmptest` (`a`) VALUES
('\\n'),
('\\n\\ndfsdfsdfs\\n');

Спасибо, что нашли время прочитать это.

7
задан Adam 29 September 2011 в 11:42
поделиться