如何在PostgreSQL中定义运算符别名?

时间:2010-08-12 17:35:56

标签: database postgresql alias operator-keyword

是否有一种简单的方法可以为PostgreSQL中的=运算符定义运算符别名?

如何为!=<>运算符解决这个问题?只有<>运算符似乎在pg_operators中。 !=运算符是硬编码的吗?

对于使用自定义运算符的应用程序,这是必需的。在大多数环境中,此运算符应该像=一样运行,但在某些情况下,我们通过创建自己的运算符和运算符类来定义特殊行为。但是对于正常情况,我们的运算符应该只是=运算符的别名,因此它对使用该实现的应用程序是透明的。

1 个答案:

答案 0 :(得分:1)

只需检查pgAdmin,即架构pg_catalog。它包含所有运算符,并向您展示如何为所有数据类型创建它们。是的,您必须为所有数据类型创建它们。所以它不仅仅是一个“别名”,你需要很多别名。

char = char的示例,使用!!!!作为别名:

CREATE OPERATOR !!!!   -- name
(
  PROCEDURE = pg_catalog.chareq,
  LEFTARG = "char",
  RIGHTARG = "char",
  COMMUTATOR = !!!!, -- the same as the name
  RESTRICT = eqsel,
  JOIN = eqjoinsel,
  HASHES,
  MERGES
);
SELECT 'a' !!!! 'a' -- true
SELECT 'a' !!!! 'b' -- false

同时检查manual并注意命名规则,它有一些限制。