如何将 IN 参数与 LIKE 一起放置在 RowSet 中?

发布于 2024-07-13 01:49:19 字数 375 浏览 7 评论 0原文

我已经努力让 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

草莓味的萝莉 2024-07-20 01:49:19

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

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

SELECT x FROM y WHERE z 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:

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

Now you could supply "someString" for the parameter, and then it will be concatenated with the constant string '__'.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文