Я столкнулся с очень необычной проблемой с 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');
Спасибо, что нашли время прочитать это.