运算符
与C/C++一样,postgreSQL也有运算符,常见运算符类型有:
- 算数运算符
- 比较运算符
- 逻辑运算符
- 位运算符
算数运算符
a为3,b为5
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | a+b 为8 |
- | 减 | a-b 为-2 |
* | 乘 | a*b 为15 |
/ | 除(取整) | b/a 为1 |
% | 取余 | b%a 为2 |
^ | 指数 | b^a 为125 |
|/ | 平方根 | |/25.0 的结果为5 |
||/ | 立方根 | ||/27.0 的结果为3 |
! | 阶乘(后缀操作符) | 5! 为120 |
!! | 阶乘(前缀操作符) | !!5 为120 |
示例:
postgres=# select ||/27;
?column?
----------
3
(1 行记录)
比较运算符
a为2,b为3
运算符 | 描述 | 实例 |
---|---|---|
= | 等于 | (a=b)为false |
!= | 不等于 | (a!=b)为ture |
<> | 不等于 | (a<>b)为ture |
> | 大于 | (a>b)为false |
< | 小于 | (a<b)为ture |
>= | 大于等于 | (a>=b)为false |
<= | 小于等于 | (a<=b)为ture |
逻辑运算符
运算符 | 描述 |
---|---|
AND | 逻辑与运算符,如果两个操作数都非零,则条件为真。 |
NOT | 逻辑非运算符,逆转操作数的真假值。 |
OR | 如果有任意一个操作数不为零,则条件为真 |
在postgreSQL中,采用的是三值逻辑系统,即有TURE、FALSE、NULL
a | b | a AND b | a OR b |
---|---|---|---|
TRUE | TRUE | TRUE | TRUE |
TRUE | FALSE | FALSE | TRUE |
TRUE | NULL | NULL | TRUE |
FALSE | FALSE | FALSE | FALSE |
FALSE | NULL | FALSE | NULL |
NULL | NULL | NULL | NULL |
a | NOT a |
---|---|
TRUE | FALSE |
FALSE | TRUE |
NULL | NULL |
位运算符
在postgreSQL中,数据进行位操作时都需要将十进制转换为二进制计数,再进行位操作。
在postgreSQL中支持的位运算符有如下表,假定A为60,B为13:
运算符 | 操作 | 实例 |
---|---|---|
& | 按位与运算符 | (A&B) 为12 ,二进制为0000 1100 |
| | 按位或运算符 | (A|B) 为61 ,二进制为0011 1101 |
# | 异或运算符 | (A#B) 为49 ,二进制为0011 0001 |
~ | 取反运算符 | (~A) 为-61 ,二进制为1100 0011 ,带符号位的二进制数补码 |
<< | 二进制左移运算符 | A<<2 为240 ,即为1111 0000 |
>> | 二进制右移运算符 | A>>2 为15 ,即为0000 1111 |
表达式
由一个或多个值、运算符、PostgreSQL函数组成的。
PostgreSQL的表达式类似一个公式,可以将其应用在查询语句中,用以查询指定条件的结果集。
布尔表达式
布尔表达式根据指定条件读取数据,格式为:
SELECT column1,column2,...,columnN
FROM table_name
WHERE SINGLE VALUE MATCHTING EXPRESSION;
例如,在表prodoctbk中查询售价sale_price
为100的商品:
SELECT *
FROM productbk WHERE sale_price=100;
查询结果为:
product_id | product_name | product_type | sale_price | purchase_price | registse__datae
------------+---------------+--------------+------------+----------------+-----------------
8 | 圆珠笔 | 办公用品 | 100 | | 2009-11-11
(1 行记录)
数字表达式
数字表达式常用于查询语句中的数学运算,格式为:
SELECT numerical_expression AS OPERATION_NAME
[FROM table_name WHERE CONDITION];
postgreSQL内置了一些数学函数,如:
- avg():返回一个表达式的平均值;
- sum():返回指定字段的总和;
- count():返回查询的记录总数;
以productbk为例,查询productbk表的记录总数:
shop=# select count(*) as record from productbk;
record
--------
8
(1 行记录)
日期表达式
日期表达式返回值是当前系统的日期和时间,可用于各种数据操作,以下实例查询当前时间:
shop=# SELECT CURRENT_TIMESTAMP;
now
-----------------------------
2020-01-12 19:48:31.7982+08
(1 行记录)