如何在连接上设置 transform_null_equals postgres 参数?
How to set transform_null_equals postgres parameter on a connection?
首先是一些上下文,以防它有助于您理解原因部分,有时还会引出其他好的答案。我喜欢这个设置 transform_null_equals 因为而不是
- sql column value=NULL 我被告知 null 表示未知
- sql WHERE 子句 value=null 其中 null 表示 null
标题中的设置基本上更改了 postgres,因此 WHERE 子句和列值中的 null 都表示 'unknown'。然后我可以说 WHERE c.col=null (这意味着找到 WHERE c.col 未知的任何列)我也可以做 WHERE c.col="value"
通过这种方式,在空语言中,我可以做 c.col=variable 并且 variable 可以为 null 表示未知,而值表示已知的东西。完美!
我意识到这违反了规范,但它使我们的团队超快(这在我们的业务中更为重要)....我们的错误更少,查询也更简单....我的天啊,简单多了。
现在,我们在用户身上设置它,但我想通过连接来设置它,这样当有人安装 postgres 时,它就会神奇地工作,而无需他们记住设置设置。
- jdbc怎么办?
- 更好的是,如何在Hikari Pool中做
使用 transform_null_equals
编写查询可能更容易,但我怀疑它们的性能会更好,因为这只会在优化查询之前将 = NULL
替换为 IS NULL
.
无论如何,您可以在 JDBC 连接字符串中使用 options
参数来向服务器进程提供参数:
jdbc:postgresql:dbname?user=myuser&password=mypwd&options=-ctransform_null_equals%3Don
首先是一些上下文,以防它有助于您理解原因部分,有时还会引出其他好的答案。我喜欢这个设置 transform_null_equals 因为而不是
- sql column value=NULL 我被告知 null 表示未知
- sql WHERE 子句 value=null 其中 null 表示 null
标题中的设置基本上更改了 postgres,因此 WHERE 子句和列值中的 null 都表示 'unknown'。然后我可以说 WHERE c.col=null (这意味着找到 WHERE c.col 未知的任何列)我也可以做 WHERE c.col="value"
通过这种方式,在空语言中,我可以做 c.col=variable 并且 variable 可以为 null 表示未知,而值表示已知的东西。完美!
我意识到这违反了规范,但它使我们的团队超快(这在我们的业务中更为重要)....我们的错误更少,查询也更简单....我的天啊,简单多了。
现在,我们在用户身上设置它,但我想通过连接来设置它,这样当有人安装 postgres 时,它就会神奇地工作,而无需他们记住设置设置。
- jdbc怎么办?
- 更好的是,如何在Hikari Pool中做
使用 transform_null_equals
编写查询可能更容易,但我怀疑它们的性能会更好,因为这只会在优化查询之前将 = NULL
替换为 IS NULL
.
无论如何,您可以在 JDBC 连接字符串中使用 options
参数来向服务器进程提供参数:
jdbc:postgresql:dbname?user=myuser&password=mypwd&options=-ctransform_null_equals%3Don