How to define an operator alias in PostgreSQL?
Is there an easy way to define an operator alias开发者_Go百科 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.
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.
精彩评论