【问题标题】:Prepared statement as sql parameter准备好的语句作为 sql 参数
【发布时间】:2018-05-07 15:50:24
【问题描述】:

如何将准备好的语句的问号传递到 sql LIKE 语句中?

LIKE '&?&' 但问号将是准备好的语句中传递的参数。

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • 您的标题表明您希望将准备好的语句作为参数的值传递:这是不可能的。如果没有,您可能需要考虑重新表述您的问题。
  • 将和号更改为百分号将是一个好的开始。
  • 使用 Java 和 Oracle 数据库。是的,我意识到他们应该是%。谢谢。

标签: java sql prepared-statement


【解决方案1】:

您可以使用表达式。例如在 ANSI SQL 中:

where col like '%' || ? || '%'

一些数据库使用concat()+,而不是(或除了)||

【讨论】:

  • 不要使用特定于 DBMS 的连接语法,而是在 Java code 中执行。
【解决方案2】:

在 Java 代码中而不是在 SQL 中执行。

String sql = "SELECT * FROM mytable WHERE mycolumn LIKE ?";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
    stmt.setString(1, "%" + value + "%");
    try (ResultSet rs = stmt.executeQuery()) {
        // code here
    }
}

【讨论】:

    最近更新 更多