首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL和Bizzare反斜杠转义问题

问MySQL和Bizzare反斜杠转义问题
EN

Stack Overflow用户
提问于 2020-07-18 13:46:32
回答 1查看 32关注 0票数 0

这在Java13 (JDBC)代码中失败了,所以我去MySQL工作台复制这个问题。

我运行一个简单查询,如下所示:

代码语言:javascript
复制
START TRANSACTION;

SET SESSION sql_mode = NO_BACKSLASH_ESCAPES;

SELECT *, "x\\x", "y\y" from dirs 
WHERE d_pathname like 'E:\\\\BOOKS\\\\Dictionaries_and_Encyclopedias\\\\%' ORDER BY d_pathname;

我得到400行的返回值。问题是,我不想使用双反斜杠。

返回的行将显示单个反斜杠,而不是双反斜杠。

有趣的是,x\\x和y\y子句看起来就像SELECT语句中所表示的那样。

当我删除LIKE子句中的双反斜杠时,我得到零行!

为什么?我不想重复反斜杠,运行简单整洁的代码。

EN

回答 1

Stack Overflow用户

发布于 2020-07-18 14:02:50

NO_BACKSLASH_ESCAPES模式仅影响在普通字符串文字中处理反斜杠的方式。它不会改变它们在LIKE模式中的处理方式。

但是,您可以使用ESCAPE选项指定一个不同的字符作为LIKE中的转义字符。只要使用模式中没有出现的其他字符即可。

代码语言:javascript
复制
WHERE d_pathname like 'E:\BOOKS\Dictionaries_and_Encyclopedias\%' ESCAPE '|'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62965120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档