ser*_*nni 2 java sql string sql-like
有以下字符串构建的 SQL 查询:
StringBuilder querySelect = new StringBuilder("select * from messages ");
StringBuilder queryWhere = new StringBuilder("where msg_id=?");
if (fileRSVO.getFileName()!= null){
queryWhere.append("and descr LIKE %?% ");
}
querySelect.append(queryWhere);
List<Map<String, Object>> list = getJdbcTemplate().queryForList(querySelect.toString(), params.toArray());
...
Run Code Online (Sandbox Code Playgroud)
问题出在这部分:
queryWhere.append("and descr LIKE %?% ")
Run Code Online (Sandbox Code Playgroud)
LIKE不起作用。
在调试中检查 - 它已添加到所有查询中。
它应该是单引号还是其他一些技巧?
谢谢。
已编辑
试过单引号:queryWhere.append("and descr LIKE '%?%' ")
不起作用
这是调试字符串:
select * from messages where msg_id=? and descr LIKE '%?%'
Run Code Online (Sandbox Code Playgroud)
假设查询是使用 a 运行的PreparedStatement,问题可能是queryForList调用setString(1, 'some descr'). 这会将 SQL 解析为"... and descr LIKE %'some descr'%".
尝试将代码更改为:
queryWhere.append("and descr LIKE ?");
...
.setString(1, "%some descr%")
Run Code Online (Sandbox Code Playgroud)