How to define an operator alias in PostgreSQL?

此生再无相见时 提交于 2019-12-02 04:43:18

问题


Is there an easy way to define an operator alias for the = operator in PostgreSQL?

How is that solved for the != and <> operator? Only the <> operator seems to be in pg_operators. Is the != operator hard-coded?

This is needed for an application which uses a self-defined operator. In most environments this operator should act like a =, but there are some cases where we define a special behavior by creating an own operator and operator class. But for the normal case our operator should just be an alias for the = operator, so that it is transparent to the application which implementation is used.


回答1:


Just check pgAdmin, the schema pg_catalog. It has all the operators and show you how the create them for all datatypes. Yes, you have to create them for all datatypes. So it's not just a single "alias", you need a lot of aliasses.

Example for a char = char, using !!!! as the alias:

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

Check the manual as well and pay attention to the naming rules, it has some restrictions.



来源:https://stackoverflow.com/questions/3470418/how-to-define-an-operator-alias-in-postgresql

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!