Как определить алиас оператора в PostgreSQL?
-
28-09-2019 - |
Вопрос
Есть ли простой способ определить псевдоним оператора для =
Оператор в PostgreSQL?
Как это решено для !=
а также <>
Оператор? Только <>
Оператор кажется в PG_Operators. Это !=
Оператор жестко закодирован?
Это необходимо для приложения, которое использует самостоятельный оператор. В большинстве окружающих этот оператор должен действовать как =
, но есть некоторые случаи, когда мы определяем особое поведение, создав собственный оператор и класс оператора. Но для нормального случая наш оператор должен просто быть псевдоним для =
Оператор, так что это прозрачно для применения, которое используется реализация.
Решение
Просто проверьте pgadmin, схему pg_catalog. У него есть все операторы и показывают, как создайте их для всех данных DataTypes. Да, вы должны создать их для всех данных DataTypes. Так что это не просто один «псевдоним», вам нужно много псевдонимов.
Пример для 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
Проверить руководство А также обратите внимание на правила именования, у него есть некоторые ограничения.