如何在连接上设置 transform_null_equals postgres 参数?

How to set transform_null_equals postgres parameter on a connection?

首先是一些上下文,以防它有助于您理解原因部分,有时还会引出其他好的答案。我喜欢这个设置 transform_null_equals 因为而不是

标题中的设置基本上更改了 postgres,因此 WHERE 子句和列值中的 null 都表示 'unknown'。然后我可以说 WHERE c.col=null (这意味着找到 WHERE c.col 未知的任何列)我也可以做 WHERE c.col="value"

通过这种方式,在空语言中,我可以做 c.col=variable 并且 variable 可以为 null 表示未知,而值表示已知的东西。完美!

我意识到这违反了规范,但它使我们的团队超快(这在我们的业务中更为重要)....我们的错误更少,查询也更简单....我的天啊,简单多了。

现在,我们在用户身上设置它,但我想通过连接来设置它,这样当有人安装 postgres 时,它就会神奇地工作,而无需他们记住设置设置。

  1. jdbc怎么办?
  2. 更好的是,如何在Hikari Pool中做

使用 transform_null_equals 编写查询可能更容易,但我怀疑它们的性能会更好,因为这只会在优化查询之前将 = NULL 替换为 IS NULL .

无论如何,您可以在 JDBC 连接字符串中使用 options 参数来向服务器进程提供参数:

jdbc:postgresql:dbname?user=myuser&password=mypwd&options=-ctransform_null_equals%3Don