关于postgres中数据类型相等比较的问题:运算符不存在错误


SELECT '{}'::json = '{}'::json

将因错误而失败。

JSON是postgres在开箱即用的等式上唯一无法进行比较的数据类型吗?如果不是,那么如何计算出哪些数据类型不能在等式上进行比较(与相同的数据类型(?

我只想得到一个将无法进行相等比较的数据类型列表。

要了解哪些类型支持=运算符,可以使用以下查询:

select lt.typname as left_type, 
rt.typname as right_type
from pg_operator opr
join pg_type lt on lt.oid = opr.oprleft
join pg_type rt on rt.oid = opr.oprright
where oprname = '=';

通过使用NOT EXISTS条件,您可以找出所有不支持=的类型

select t.typname
from pg_type t
where not exists (select *
from pg_operator opr
where opr.oprname = '='
and opr.oprleft = t.oid 
and opr.oprright = t.oid);

最新更新