PostgreSQL学习笔记5:运算符与表达式

运算符

与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

aba AND ba OR b
TRUETRUETRUETRUE
TRUEFALSEFALSETRUE
TRUENULLNULLTRUE
FALSEFALSEFALSEFALSE
FALSENULLFALSENULL
NULLNULLNULLNULL
aNOT a
TRUEFALSE
FALSETRUE
NULLNULL
位运算符

在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<<2240,即为1111 0000
>>二进制右移运算符A>>215,即为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 行记录)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值