Describes the built-in operators available in Postgres.
Postgres provides a large number of built-in operators on system types. These operators are declared in the system catalog pg_operator. Every entry in pg_operator includes the name of the procedure that implements the operator and the class OIDs of the input and output types.
To view all variations of the “||” string concatenation operator, try
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)
Users may invoke operators using the operator name, as in:
select * from emp where salary < 40000;Alternatively, users may call the functions that implement the operators directly. In this case, the query above would be expressed as:
select * from emp where int4lt(salary, 40000);
psql has a command (\dd) to show these operators.
Operators have a precedence which is currently hardcoded into the parser. Most operators have the same precedence and are left-associative. This may lead to non-intuitive behavior; for example the boolean operators "<" and ">" have a different precedence that the boolean operators "<=" and ">=".
Table 4-1. Operator Ordering (decreasing precedence)
| Element | Precedence | Description |
|---|---|---|
| UNION | left | SQL select construct |
| :: | Postgres typecasting | |
| [ ] | left | array delimiters |
| . | left | table/column delimiter |
| - | right | unary minus |
| ; | left | statement termination, logarithm |
| : | right | exponentiation |
| | | left | start of interval |
| * / % | left | multiplication, division |
| + - | left | addition, subtraction |
| IS | test for TRUE, FALSE, NULL | |
| ISNULL | test for NULL | |
| NOTNULL | test for NOT NULL | |
| (all other operators) | native and user-defined | |
| IN | set membership | |
| BETWEEN | containment | |
| LIKE | string pattern matching | |
| < > | boolean inequality | |
| = | right | equality |
| NOT | right | negation |
| AND | left | logical intersection |
| OR | left | logical union |