PostgreSQL条件表达式
PostgreSQL条件表达式
条件表达式在日常工作中很多场景都会用到,比如某个字段为空,取另外一个字段;某个值大于多少,取什么字段,小于多少取什么字段等等。那么下面来简单的学习下PostgreSQL
有那些条件表达式。
1、CASE
CASE
表达式是一种通用的条件表达式,类似于编程语言中的if else
语句。具体语法如下:
CASE WHEN condition THEN result [WHEN ...] [ELSE result]END
CASE
子句可以用于任何表达式可以存在的地方。condition
是一个返回boolean
的表达式。如果条件的结果为true
,那么CASE
表达式的结果就是符合条件的result
,并且不再处理剩余的CASE
表达式。如果条件的结果为false
,那么以相同方式搜寻任何随后的WHEN
子句。如果没有WHEN condition
为true
, 那么表达式的结果就是在ELSE
子句里的result
。 如果省略了ELSE
子句且没有匹配的条件,结果为NULL
。如下例子:
select id, (CASE WHEN id=1 THEN 'one' WHEN id=2 THEN 'two' WHEN id=3 THEN 'three' WHEN id=4 THEN 'four' ELSE 'other' END) AS ids from student;--结果:id|ids |--|-----| 1|one | 2|two | 3|three| 4|for |
除了上面的写法,CASE
还有另外一种变体,语法如下:
CASE expression WHEN value THEN result [WHEN ...] [ELSE result]END
先计算expression
的值,然后与每个WHEN
子句里声明的value
表达式对比,直到找到一个相等的。 如果没有找到匹配的,则返回在ELSE
子句里的result
(或者NULL
)。将上面的例子改一下为:
select id, (CASE id WHEN 1 THEN 'one' WHEN 2 THEN 'two' WHEN 3 THEN 'three' WHEN 4 THEN 'four' ELSE 'other' END) AS ids from student;--结果:id|ids |--|-----| 1|one | 2|two | 3|three| 4|for |
CASE
语句不光可以在select
后使用,也可以在where
后使用,当有时某个字段需要条件来处理时,就可以使用,如下:
select id from student WHERE (CASE WHEN id >2 THEN 'a' ELSE 'b' END) = 'a'--结果:id|--| 3| 4|
2、COALESCE
使用过Oracle
数据库的肯定知道里面的NVL
函数,那么在PostgreSQL
数据库可以用COALESCE
函数来实现类似功能。
COALESCE(value [, ...])
COALESCE
返回它的第一个非NULL
的参数值。如果所有参数都是null
那么返回null
。 它常用于在显示数据时用缺省值替换 NULL
。例如:
select COALESCE(s.address,'地址不详') AS address FROM student s--结果:address|-------|天河一路 | 天河一路 | 地址不详 | 地址不详 |
这个函数指判断NULL,如果字段为空字符串,则不在范围
3、NULLIF
NULLIF(value1, value2)
当且仅当value1
等于value2
时, NULLIF
才返回null
。否则它返回value1
。
select NULLIF(address,grade),address,grade FROM student s--结果:nullif|address|grade|------|-------|-----|天河一路 |天河一路 |一年级1班 天河一路 |天河一路 |一年级2班 |天河一路 |天河一路 | |天河一路 |天河一路 |
常用的条件表达式就这些了。
来源https://www.cnblogs.com/tenghu/p/14798586.html