我现在争取让一个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个字符后缀.
引号内的参数占位符将被忽略.它们被解释为文字"?".如果使用参数,则必须将占位符放在SQL表达式的引号之外.
但是LIKE
可以与任何字符串或任何产生字符串的表达式进行比较.例如:
SELECT x FROM y WHERE z LIKE (? || '__')
现在你可以为参数提供"someString",然后它将与常量字符串连接'__'
.