Postgres proporciona un gran número de tipos de operadores. Estos operadores están declarados en el catálogo del sistema pg_operator. Cada entrada en pg_operator incluye el nombre del procedimiento que implementa el operador y las clases OIDs de los tipos de entrada y salida.
Para ver todas las variantes del operador de concatenación de strings "||" pruebe,
SELECT oprleft, oprright, oprresult, oprcode
FROM pg_operator WHERE oprname = '||';
oprleft|oprright|oprresult|oprcode
-------+--------+---------+-------
25| 25| 25|textcat
1042| 1042| 1042|textcat
1043| 1043| 1043|textcat
(3 rows)
|
Los usuarios pueden invocar a los operadores utilizando el nombre del operador de este modo:
select * from emp where salary < 40000; |
select * from emp where int4lt(salary, 40000); |
psql tiene un comando (\dd) para mostrar estos operadores.
Los operadores tienen una precedencia que está codificada dentro del parser. La mayoría de los operadores tienen la misma precedencia y son asociativos. Esto puede acarrear comportamientos poco intuitivos. Por ejemplo, los operadores booleanos "<" y ">" tienen una precedencia diferente que los operadores booleanos "<=" y ">=".
Tabla 1. Orden de operadores (precedencia decreciente)
| Elemento | Precedencia | Descripción |
|---|---|---|
| UNION | izquierda | constructor SQL de select |
| :: | conversor de tipos de Postgres | |
| [ ] | izquierda | delimitadores de array |
| . | izquierda | delimitadores de tabla/columna |
| - | derecha | menos unario |
| ; | izquierda | terminación de declaración, logaritmo |
| : | derecha | exponenciación |
| | | izquierda | comienzo de intervalo |
| * / % | izquierda | multiplicación, división |
| + - | izquierda | adición, substracción |
| IS | test para TRUE, FALSE, NULL | |
| ISNULL | test para NULL | |
| NOTNULL | test para NOT NULL | |
| (todos los demás operadores) | nativos y definidos por el usuario | |
| IN | fijar miembro | |
| BETWEEN | continente | |
| LIKE | concordancia de patrones de strings | |
| < > | desigualdad booleana | |
| = | derecha | igualdad |
| NOT | derecha | negación |
| AND | izquierda | intersección lógica |
| OR | izquierda | unión lógica |