历史版本。 PostgreSQL 6.4 已结束支持。 请参阅 当前版本手册.
第 9 章 操作符
摘要
描述Postgres中可用的内建操作符。
Postgres 为系统类型提供了大量的内建操作符。这些操作符声明在系统目录 pg_operator 中。pg_operator 中的每个项都包含实现该操作符的过程的名称以及输入和输出类型的类 OIDs。
要查看“||”字符串连接操作符的所有变体,可以试试
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)用户可以使用操作符名称来调用操作符,例如:
select * from emp where salary < 40000;
或者,用户也可以直接调用实现这些操作符的函数。在这种情况下,上面的查询将表达为:
select * from emp where int4lt(salary, 40000);
psql
有一个命令(\dd)用来显示这些操作符。
9.1. 词法优先级
操作符有优先级,目前优先级被硬编码在解析器中。大多数操作符具有相同的优先级并且不结合。这可能导致不直观的行为;例如布尔操作符"<"和">"的优先级与布尔操作符"<="和">="不同。
表 9.1. 操作符排序(优先级递减)
| 元素 | 优先级 | 描述 |
|---|---|---|
| UNION | left | SQL select 构造 |
| :: | Postgres 类型转换 | |
| [ ] | left | 数组定界符 |
| . | left | 表/列定界符 |
| - | right | 一元负号 |
| ; | left | 语句结束、对数 |
| : | right | 求幂 |
| | | left | 间隔的起点 |
| * / | left | 乘法、除法 |
| + - | left | 加法、减法 |
| IS | 测试 TRUE、FALSE、NULL | |
| ISNULL | 测试 NULL | |
| NOTNULL | 测试非 NULL | |
| (所有其他操作符) | 内建和用户定义 | |
| IN | 集合成员 | |
| BETWEEN | 包含 | |
| LIKE | 字符串模式匹配 | |
| < > | 布尔不等 | |
| = | right | 等于 |
| NOT | right | 非 |
| AND | left | 逻辑交 |
| OR | left | 逻辑并 |