Décrit les opérateurs natifs disponibles dans Postgres.
Postgres fournit un grand nombre d'opérateurs natifs sur les types système. Ces opérateurs sont déclarés dans le catalogue système pg_operator. Chaque entrée dans pg_operator inclut le nom de la procédure qui implémente l'opérateur et les classes OID des types entrée et sortie.
Pour voir toutes les variations de l'opérateur chaîne de concaténation "||", essayez:
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) |
Les utilisateurs doivent invoquer les opérateurs en utilisant le nom d'opérateur comme suit:
select * from emp where salary < 40000; |
select * from emp where int4lt(salary, 40000); |
psql possède une commande (\dd) pour lister ces opérateurs.
Les priorités des opérateurs sont codées en dur dans l'analyseur d'entrées SQL (parser). La plupart des opérateurs ont la même précédence et sont non-associatifs. Ceci peut conduire à un comportement difficile à prévoir si l'on ignore cette règle, par exemple les opérateurs booléens "<" et ">" ont une priorité différente des opérateurs booléens "<=" et ">=".
Tableau 4-1. Operateurs de tri (priorité décroissante)
Element | Precedence | Description |
---|---|---|
UNION | left | construction SQL |
:: | type Postgres | |
[ ] | left | délimiteurs de tableaux |
. | left | délimiteur de table/colonne |
- | right | unary minus |
; | left | terminaison de commande, logarithme |
: | right | exponentiation |
| | left | début d'un intervalle |
* / % | left | multiplication, division |
+ - | left | addition, soustraction |
IS | test pour TRUE, FALSE, NULL | |
ISNULL | test pour NULL | |
NOTNULL | test pour NOT NULL | |
(tous les autres opérateurs) | natif et utilisateur | |
IN | set membership | |
BETWEEN | contenant | |
LIKE | string pattern matching | |
< > | inégalité booléene | |
= | right | egalité |
NOT | right | négation |
AND | left | intersection logique |
OR | left | union logique |