PostgreSQL数据库开启 a=null等价于a is null 功能

发布时间 2023-11-27 11:26:19作者: MrSponge

前言

PostgreSQL官方文档http://www.postgres.cn/docs/11/functions-comparison.html

今天在预览PostgreSQL文档的时候看到了这个功能,平时写SQL都是a is [not] null来进行判断的,第一次见到可以这样,觉得挺新奇的就先记录下。ps:存在即合理。

GO

transform_null_equals (boolean)是PostgreSQL的一个参数,可以通过下面语句查看状态

show transform_null_equals;

这个默认是关闭的,如果想开启,可以通过下面语句实现

set transform_null_equals = on;

当打开时,形为expr = NULL(或NULL = expr)的表达式将被当做expr IS NULL, 也就是说,如果expr得出空值值则返回真,否则返回假。正确的 SQL 标准兼容的expr = NULL行为总是返回空(未知)。因此这个参数默认为off。
请注意这个选项只影响= NULL形式,而不影响其它比较操作符或者其它与一些涉及等值操作符的表达式在计算上等效的其他表达式(例如IN)。因此,这个选项不是劣质程序的一般修复。


个人认为正常情况没必要开启,如果大家都写习惯了a is null语句,当遇到数据库迁移,会遇到很多麻烦。