2016-03-14 42 views
0

如何在SQL Where子句中轉義特殊字符? SLASH(/)具體。我可以把它與「喜歡」的工作,但我需要的SQL,因爲"/path/to/file/"返回兩行的確切URL匹配:如何在SQL Where子句中轉義特殊字符?

的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()); 
+4

'URL LIKE '%/路徑/到/文件/%''有望復出兩那些行。 – jarlh

+3

如果它使用'LIKE'爲什麼不能簡單地使用'='來代替?或者刪除'%'?順便說一句,斜槓不是SQL中的特殊字符。 – dnoeth

+2

如果你想要一個完全匹配,那麼不要使用通配符。 –

回答

0

在SQL SLASH犯規必須scaped。您可以在查詢中使用斜槓而不會出現問題。

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

這個查詢將很好地工作,如果url變量是一樣的東西 「/路徑/到/文件/」

0

你的問題不是斜線,如果你只是想返回精確匹配,那麼就不要使用LIKE,使用= -

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