相关疑难解决方法(0)

如何使用包含问号"?"的PostgreSQL JSON(B)运算符 通过JDBC

PostgreSQL知道一些在其名称中使用问号字符的时髦ASCII艺术运算符,例如这些JSON运算符:

  • ? 字符串是否作为JSON值中的顶级键存在?
  • ?| 这些数组字符串中是否存在顶级键?
  • ?& 所有这些数组字符串都作为顶级键存在吗?

问题是官方PostgreSQL JDBC驱动程序似乎没有正确解析包含此类运算符的SQL字符串.它假定问号是普通的JDBC绑定变量.以下代码......

try (PreparedStatement s = c.prepareStatement("select '{}'::jsonb ?| array['a', 'b']");
     ResultSet rs = s.executeQuery()) {
     ...
}
Run Code Online (Sandbox Code Playgroud)

...引发异常:

org.postgresql.util.PSQLException: Für den Parameter 1 wurde kein Wert angegeben.
    at org.postgresql.core.v3.SimpleParameterList.checkAllParametersSet(SimpleParameterList.java:225)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:190)
    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:424)
    at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:161)
    at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:114)
Run Code Online (Sandbox Code Playgroud)

我该如何使用此运算符?

java sql postgresql json jdbc

9
推荐指数
1
解决办法
2971
查看次数

标签 统计

java ×1

jdbc ×1

json ×1

postgresql ×1

sql ×1