Operadores

Describe los operadores propios disponibles en Postgres.

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;
   
De otra manera, los usuarios pueden llamar a las funciones que implementan los operadores directamente. En este caso la pregunta anterior se har�a as�:
select * from emp where int4lt(salary, 40000);
   

psql tiene un comando (\dd) para mostrar estos operadores.

Lexical Precedence

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)

ElementoPrecedenciaDescripci�n
UNIONizquierdaconstructor SQL de select
:: conversor de tipos de Postgres
[ ]izquierdadelimitadores de array
.izquierdadelimitadores de tabla/columna
-derechamenos unario
;izquierdaterminaci�n de declaraci�n, logaritmo
:derechaexponenciaci�n
|izquierdacomienzo de intervalo
* / %izquierdamultiplicaci�n, divisi�n
+ -izquierdaadici�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
=derechaigualdad
NOTderechanegaci�n
ANDizquierdaintersecci�n l�gica
ORizquierdauni�n l�gica