开发者社区> 问答> 正文

如何在MySQL中搜索斜杠(\)?为什么不必须在(=)处转义(\),但需要在Like中转?mysql

考虑此查询(此处为演示)

(SELECT * FROM titles where title = 'test\') UNION ALL (SELECT * FROM titles where title LIKE 'test\\') 输出:

| ID | TITLE |

| 1 | test\ | | 1 | test\ | 题: 为什么(=)不需要额外的(\),而(例如)额外的\则需要?很明显,MySQL对(IKE \)使用(test \)转义了(test \),然后使用(test \\)进行了转义。

表信息:

CREATE TABLE IF NOT EXISTS titles ( id int(11) NOT NULL AUTO_INCREMENT, title varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

-- -- Dumping data for table titles

INSERT INTO titles (id, title) VALUES (1, 'test\');

展开
收起
保持可爱mmm 2020-05-17 17:54:22 655 0
1 条回答
写回答
取消 提交回答
  • \LIKE默认情况下用作转义字符。

    从手册中获得LIKE:

    由于MySQL在字符串中使用C转义语法(例如,“ \ n”表示换行符),因此必须对LIKE字符串中使用的任何“ \”加倍。例如,要搜索“ \ n”,请将其指定为“ \ n”。要搜索“ \”,请将其指定为“ \\”;这是因为解析器会一次删除反斜杠,而在进行模式匹配时会再次反斜杠,因此要匹配一个反斜杠。

    您可以通过指定另一个转义符来更改此设置,如下所示:

    SELECT * FROM titles where title LIKE 'test\' ESCAPE '|'来源:stack overflow

    2020-05-17 18:02:01
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像