Chapter 9. 函数和操作符

Table of Contents
9.1. 逻辑操作符
9.2. 比较操作符
9.3. 数学函数和操作符
9.4. 字符串函数和操作符
9.5. 二进制字串函数和操作符
9.6. 模式匹配
9.6.1. LIKE
9.6.2. SIMILAR TO 和 SQL99 正则表达式
9.6.3. POSIX 正则表达式
9.7. 数据类型格式化函数
9.8. 时间/日期函数和操作符
9.8.1. EXTRACT,date_part
9.8.2. date_trunc
9.8.3. AT TIME ZONE
9.8.4. 当前日期/时间
9.9. 几何函数和操作符
9.10. 网络地址类型函数
9.11. 序列操作函数
9.12. 条件表达式
9.12.1. CASE
9.12.2. COALESCE
9.12.3. NULLIF
9.13. 杂项函数
9.14. 数组函数和操作符
9.15. 聚集函数
9.16. 子查询表达式
9.16.1. EXISTS
9.16.2. IN
9.16.3. NOT IN
9.16.4. ANY/SOME
9.16.5. ALL
9.16.6. 逐行比较
9.17. 行和数组比较
9.17.1. IN
9.17.2. NOT IN
9.17.3. ANY/SOME (数组)
9.17.4. ALL (array)
9.17.5. 逐行比较

PostgreSQL 为内建的数据类型提供了 大量的函数和操作符。用户也可以定义它们自己的函数和操作符, 象 Part V 里描述的那样。 psql 命令 \df 和 \do 可以分别用于显示所有实际可用的函数 和操作符的列表。

如果你关心移植性,那么请注意,我们在本章描述的大多数 函数和操作符,除了最琐碎的算术和比较操作符以及一些做了明确 标记的函数以外,都没有在SQL标准里声明。 许多其它 SQL 实现也有这些扩展的功能, 并且很多时候不同的数据库产品中这些功能是相互兼容的。

9.1. 逻辑操作符

常用的逻辑操作符有:

AND
OR
NOT

SQL 使用三值的布尔逻辑,这时空值代表"unknown"。 观察下面真值表:

aba AND ba OR b
TRUETRUETRUETRUE
TRUEFALSEFALSETRUE
TRUENULLNULLTRUE
FALSEFALSEFALSEFALSE
FALSENULLFALSENULL
NULLNULLNULLNULL

aNOT a
TRUEFALSE
FALSETRUE
NULLNULL

操作符 AND 和 OR 都是可交换的, 也就是说,你可以交换左右操作数而不影响结果。但是请参阅 Section 4.2.11 获取有关子表达式计算顺序的更多信息。