如何将 IN 参数与 LIKE 一起放置在 RowSet 中?
我已经努力让 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 个字符后缀。
I have fighting to get a IN parameter to work inside of a LIKE statement now for hours!
I am using a CachedRowSet, which I understand should follow the same rules as a PreparedStatement.
Here is the basic query:
CachedRowSet cache;
String sql = "SELECT x " +
"FROM Y " +
"WHERE z LIKE '?__'"
cache.setCommand(sql);
cache.setString(1, "someString");
someString is a known id but the database( by the way is PostgreSQL) entry has a unknown 2 char suffix.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
引号内的参数占位符将被忽略。 它们被解释为字面意思“?”。 如果使用参数,则必须将占位符放在 SQL 表达式中的引号之外。
但是
LIKE
可以与任何字符串或任何生成字符串的表达式进行比较。 例如:现在您可以为参数提供“someString”,然后它将与常量字符串
'__'
连接。Parameter placeholders inside quotes are ignored. They're interpreted as a literal "?". If you use a parameter, you must put the placeholder outside quotes in the SQL expression.
But
LIKE
can be compared to any string or any expression that produces a string. For example:Now you could supply "someString" for the parameter, and then it will be concatenated with the constant string
'__'
.