【问题标题】:Named parameter not replaced inside single quotation marks单引号内未替换命名参数
【发布时间】:2019-07-01 23:06:22
【问题描述】:

我正在尝试使用命名参数,但是当我将它们放在单引号内时,它们不会被查询替换,它返回 0 结果。如何在单引号内使用我的参数?

protected static final String SQL_QUERY =
        "    SELECT * \n" +
        "    FROM example \n" +
        "    WHERE UPPER(name) LIKE UPPER('%:query%') \n";

@Autowired
private NamedParameterJdbcTemplate template;

public List<Item> getResultFromQuery(String query) throws Exception {
return (List<Item>) template.query(SQL_QUERY,
                    new MapSqlParameterSource().addValue("query", query), resultSetExtractor);
}

【问题讨论】:

  • 你不需要引号。准备好的语句将为您添加它们。
  • WHERE UPPER(name) LIKE '%' || UPPER(:query) || '%'
  • 谢谢@EdGibbs,解决了问题。
  • 甜蜜!很高兴它解决了:)

标签: java sql oracle named-parameters


【解决方案1】:

可能你在单引号内使用了 \n,你需要封装 \n 并且对于表达式 '%:query%' 你可以将它写成... '+%:query%+' 在单引号内或可能是'"+%:query%+"'

【讨论】:

    猜你喜欢
    • 2018-11-18
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 2021-08-12
    • 1970-01-01
    • 2017-12-29
    相关资源
    最近更新 更多