这在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\x
和yy
子句与SELECT语句中所表示的一样。
当我删除LIKE
子句中的双反斜杠时,我得到零行!
为什么?我宁愿不必将反斜杠加倍,而是运行简单干净的代码。
NO_BACKSLASH_ESCAPES
模式只影响反斜杠在普通字符串文本中的处理方式。它不会改变它们在LIKE
模式中的处理方式。
但是,可以使用ESCAPE
选项指定不同的字符作为LIKE
中的转义符。只需使用一些没有出现在你的模式中的其他字符。
WHERE d_pathname like 'E:BOOKSDictionaries_and_Encyclopedias%' ESCAPE '|'