如何使用带有RowSet的LIKE放置IN参数?

Wol*_*gon 3 java postgresql prepared-statement rowset

我现在争取让一个IN参数在LIKE语句中工作几个小时!我使用的是CachedRowSet,我理解它应该遵循与PreparedStatement相同的规则.
这是基本查询:

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

cache.setCommand(sql);
cache.setString(1, "someString");
Run Code Online (Sandbox Code Playgroud)

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

Bil*_*win 5

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

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

SELECT x FROM y WHERE z LIKE (? || '__')
Run Code Online (Sandbox Code Playgroud)

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