gpt4 book ai didi

java - 像 %?% 不能作为 StringBuilder SQL 查询的一部分

转载 作者:行者123 更新时间:2023-12-02 10:47:33 24 4
gpt4 key购买 nike

有以下字符串构建的 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());
...

问题出在这部分:

queryWhere.append("and descr LIKE %?% ")

LIKE 不起作用。
在调试中检查 - 它已添加到所有查询中。
它应该是单引号还是其他一些技巧?

谢谢。

已编辑

尝试过单引号:queryWhere.append("and descr LIKE '%?%' ")不起作用

这是调试字符串:

select * from messages where msg_id=? and descr LIKE '%?%' 

最佳答案

假设使用 PreparedStatement 运行查询,问题可能是 queryForList 调用 setString(1, 'some descr') 。这会将 SQL 解析为“... and descr LIKE %'some descr'%”

尝试将代码更改为:

queryWhere.append("and descr LIKE ?");
...
.setString(1, "%some descr%")

关于java - 像 %?% 不能作为 StringBuilder SQL 查询的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5379495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com