3

我一直在努力让一个 IN 参数在 LIKE 语句中工作几个小时!我正在使用 CachedRowSet,据我所知,它应该遵循与 PreparedStatement 相同的规则。
这是基本查询:

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

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

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

4

1 回答 1

5

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

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

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

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

于 2009-01-29T03:51:40.260 回答