pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
摘要
描述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. 操作符排序(优先级递减)
| 元素 | 优先级 | 描述 |
|---|---|---|
| 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 | 逻辑并 |
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。