如何在SQLWHERE子句中转义特殊字符?

如何在SQLWHERE子句中转义特殊字符?,sql,jdbc,Sql,Jdbc,如何在SQLWHERE子句中转义特殊字符?特别是斜杠(/)。我可以让它与“LIKE”一起工作,但我需要SQL来匹配准确的URL,因为“/path/to/file/”返回两行: 数据库中的URL: "/path/to/file/" "/path/to/file/*/" StringBuilder sb = new StringBuilder(); sb.append("SELECT * FROM MY_TABLE"); sb.append("WHERE URL LIKE '%" + url +

如何在SQLWHERE子句中转义特殊字符?特别是斜杠(/)。我可以让它与“LIKE”一起工作,但我需要SQL来匹配准确的URL,因为
“/path/to/file/”
返回两行:

数据库中的URL:

"/path/to/file/"
"/path/to/file/*/"

StringBuilder sb = new StringBuilder();
sb.append("SELECT * FROM MY_TABLE");
sb.append("WHERE URL LIKE '%" + url + "%'");

return getNamedParameterJdbcTemplate().query(sb.toString(), new MyTableMapper());

你的问题不是斜杠,如果你只想返回一个精确的匹配,那么不要像使用
那样使用
,而是使用
=
-

StringBuilder sb = new StringBuilder();
sb.append("SELECT * FROM MY_TABLE");
sb.append("WHERE URL = '" + url + "'");

在SQL中,斜杠不需要替换。您可以在查询中使用斜杠而不会出现问题

StringBuilder sb = new StringBuilder();
sb.append("SELECT * FROM MY_TABLE");
sb.append("WHERE URL = '" + url + "'");

如果url变量类似于“/path/to/file/”

类似于“/path/to/file/%”的url,则此查询将非常有效。
将返回这两行。如果它使用类似于
工作,为什么不能改为使用
=
?或者删除
%
?顺便说一句,斜杠在SQL中不是一个特殊字符。如果您想要精确匹配,请不要将like与通配符一起使用。使用
PreparedStatement
您可以进行SQL注入。