PostgreSQL
上一页   下一页

第四章. 操作符

内容
语法优先级
通用操作符
数字操作符
几何操作符
时间间隔操作符
IP V4 CIDR 操作符
IP V4 INET 操作符
描述 Postgres 内建的可用操作符.
Postgres 提供大量的内建的用于系统类型的操作符.这些操作符在系统表 pg_operator 中定义.在 pg_operator 里的每一个入口/记录都包括操作符实现过程名和输入输出类型的表OID

要想了解所有"||" -字符串连接操作符的所有变种,使用下面命令:

    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. 操作符顺序 (优先级降序)
 
元素 优先级 描述
UNION SQL 选择构造(select construct)
::   Postgres 类型转换 
[ ] 数组分隔符 
. 表/列分隔符
- 负(unary minus )
: 幂 
| 间隔开始(start of interval )
* / % 乘,除,模除
+ - 加减
IS   测试 TRUE, FALSE, NULL
ISNULL   测试 NULL 
NOTNULL   测试 NOT NULL 
(所有其他操作符)   本地和用户定义 
IN   设置成员(set membership)
BETWEEN   包含 
OVERLAPS   时间间隔重叠
LIKE   字符串模式匹配 
< >   布尔不相等
= 相等 
NOT
AND 逻辑与
OR 逻辑或


上一页 首页 下一页
IP 版本 4 网络和主机地址 开头 通用操作符