我遇到了一个非常不寻常的MySQL问题,涉及反斜杠.基本上,当我使用LIKE进行通配符匹配时,\n在数据库中作为文本而不是实际的换行符,如果我只有一个右手通配符,它将只返回一个匹配:
SELECT *
FROM `tmptest`
WHERE `a` LIKE '\\\\n%'
Run Code Online (Sandbox Code Playgroud)
现在,如果我这样查询,它将不会返回任何内容:
SELECT *
FROM `tmptest`
WHERE `a` LIKE '%\\\\n%'
Run Code Online (Sandbox Code Playgroud)
正如您从表中的数据中看到的,两个查询都应该匹配.我不确定这是否是我遗漏的东西,或者我错误地转换了换行符,但是第一个查询无效,第二个查询没有意义.
表结构:
CREATE TABLE IF NOT EXISTS `tmptest` (
`a` varchar(22) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
样本数据:
INSERT INTO `tmptest` (`a`) VALUES
('\\n'),
('\\n\\ndfsdfsdfs\\n');
Run Code Online (Sandbox Code Playgroud)
感谢您花时间阅读本文.