【问题标题】:How do I place an IN parameter with a LIKE with a RowSet?如何使用带有 RowSet 的 LIKE 放置 IN 参数?
【发布时间】:2010-10-04 04:08:56
【问题描述】:

我已经为获得一个在 LIKE 语句中工作的 IN 参数奋斗了好几个小时! 我正在使用 CachedRowSet,据我所知,它应该遵循与 PreparedStatement 相同的规则。
这是基本查询:

CachedRowSet cache;
String sql = "SELECT x " +
                "FROM   Y " +
             "WHERE z LIKE '?__'" 

cache.setCommand(sql);
cache.setString(1, "someString");

someString 是一个已知的 id,但数据库(顺便说一下是 PostgreSQL)条目有一个未知的 2 字符后缀。

【问题讨论】:

    标签: java postgresql prepared-statement rowset


    【解决方案1】:

    引号内的参数占位符被忽略。它们被解释为文字“?”。如果使用参数,则必须将占位符放在 SQL 表达式中的引号之外。

    LIKE 可以与任何字符串或任何产生字符串的表达式 进行比较。例如:

    SELECT x FROM y WHERE z LIKE (? || '__')
    

    现在您可以为参数提供“someString”,然后它将与常量字符串'__' 连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-23
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多