MySQL和Bizzare Backflash转义问题



这在Java 13(JDBC(代码中失败了,所以我去MySQL工作台重复问题。

我运行一个简单的查询作为:

START TRANSACTION;
SET SESSION sql_mode = NO_BACKSLASH_ESCAPES;
SELECT *, "x\x", "yy" from dirs 
WHERE d_pathname like 'E:\\BOOKS\\Dictionaries_and_Encyclopedias\\%' ORDER BY d_pathname;

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

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

有趣的是,x\xyy子句与SELECT语句中所表示的一样。

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

为什么?我宁愿不必将反斜杠加倍,而是运行简单干净的代码。

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

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

WHERE d_pathname like 'E:BOOKSDictionaries_and_Encyclopedias%' ESCAPE '|'

最新更新