2

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

!=和运算符是如何解决的<>?只有<>运算符似乎在 pg_operators 中。操作员是!=硬编码的吗?

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

4

1 回答 1

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

还要检查手册并注意命名规则,它有一些限制。

于 2010-08-12T18:09:08.423 回答