↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 7.0 / 6.5 / 6.4
历史版本PostgreSQL 7.0 已于 2005 年 5 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

第 4 章 操作符

摘要

描述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)用来显示这些操作符。

4.1. 词法优先级

操作符有优先级,目前优先级被硬编码在解析器中。 大多数操作符具有相同的优先级并且是左结合的。这可能导致 不直观的行为;例如布尔操作符"<"和">"的优先级 与布尔操作符"<="和">="不同。

表 4.1. 操作符排序(优先级递减)

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


提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。