↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 7.0 / 6.5 / 6.4
历史版本。 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. 操作符排序(优先级递减)

元素优先级描述
UNIONleftSQL select 构造
:: Postgres 类型转换
[ ]left数组定界符
.left表/列定界符
-right一元负号
;left语句结束、对数
:right求幂
|left间隔的起点
* /left乘法、除法
+ -left加法、减法
IS 测试 TRUE、FALSE、NULL
ISNULL 测试 NULL
NOTNULL 测试非 NULL
(所有其他操作符) 内建和用户定义
IN 集合成员
BETWEEN 包含
LIKE 字符串模式匹配
< > 布尔不等
=right等于
NOTright非
ANDleft逻辑交
ORleft逻辑并


报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.