【发布时间】:2018-02-21 19:12:23
【问题描述】:
我在将以下查询转换为 jdbc 准备语句并设置参数时遇到了麻烦。
oracle 查询:
select * from TRANSACTION_DUMMY where ID = 'aa'
and JSON_EXISTS(TRANSACTION_DUMMY_INDEX FORMAT JSON,
'$.header.lineItems[*].status?(@=="complete")')
翻译查询:
select * from TRANSACTION_DUMMY where ID = ?
and JSON_EXISTS(TRANSACTION_DUMMY_INDEX FORMAT JSON,
'$.header.lineItems[*].status?(@==?)')
问题是如何在查询中设置参数。 尝试使用索引,但总是得到错误,无效的列索引。
任何指针如何使用java jdbc准备好的语句来处理上述场景?
谢谢
【问题讨论】:
-
你试过的代码是什么?
-
乍一看你可能需要转义
status?中的?。这是您原始查询的一部分,但 jdbc 会将其视为参数,因此当您只需要两个参数时,您有三个参数 -
@Adam - 那个问号,以及等号后面的那个 - 大概是 OP 试图绑定的那个,因此抛出了错误 - 应该被忽略,因为它们在一个单引号字符串,被视为文本文字,不被解释。
-
@AlexPoole:啊!所以,这两个问号需要区别对待,但我改错了:)