Postgresql 关于postgres中数据类型相等比较的问题:运算符不存在错误 SELECT'{}'::json='{}'::json

Postgresql 关于postgres中数据类型相等比较的问题:运算符不存在错误 SELECT'{}'::json='{}'::json,postgresql,Postgresql,将因错误而失败 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.

将因错误而失败

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);

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

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);

这回答了你的问题吗?不。我只对不可比较的类型感兴趣。这能回答你的问题吗?不。我只对不可比较的类型感兴趣。非常感谢!
pg_操作符
查询正是我不久前梦寐以求的:(
cidr
在不存在的列表中,但等式在其中起作用。此外,一些失败(
键入“基数”不存在
)多谢了!那
pg_操作符
查询正是我不久前梦寐以求的:((.
cidr
位于不存在的列表中,但等式在该列表中起作用。此外,一些失败(
类型“基数”不存在