任何在JDBC中直接禁用参数或执行SQL语句的方法



我正在尝试使用JDBC PreparedStatement来执行一条SQL语句,该语句的运算符为?。(是第二代?|操作员)

它抛出一个异常,告诉我没有指定参数org.postgresql.util.PSQLException: No value specified for parameter 1.。应该是操作员。有什么方法可以绕过参数检查并直接执行语句吗?

我看到IntelliJ中的数据库功能可以直接用JDBC驱动程序执行SQL,我认为应该有一种方法

关于这个问题有一个问题(Escapeng-hstore在JDBC Prepared语句中包含运算符),但我确实需要这个运算符来使索引在大型数据集上工作。

感谢

您可以使用SQL函数内联。一个简单的SQL函数将被重写(几乎总是)。

CREATE OR REPLACE FUNCTION hstore_contains(hstore, text[]) RETURNS boolean AS $$
    SELECT $1 ?| $2;
$$ LANGUAGE SQL;

因此,下面的两个查询将获得相同的查询计划,并且都将利用索引:

SELECT * FROM tbl WHERE hstore_contains(col1,array['a','b']);
SELECT * FROM tbl WHERE col1 ?| array['a','b'];

最新更新