PostgreSQL: Conditional Expressions

像其它数据库一样,PostgreSQL 也有条件表达式, 这里主要描述 PostgreSQL的条件表达式的用法。

CASE WHEN 语法

CASE WHEN condition THEN result
[WHEN …]
[ELSE result]
END

备注:”case when” 的用法和 if/else 语句很相似,具体不解释了,看下面这个例子。

CASE When 用法举例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
skytf=> /d test_41;  
Table "skytf.test_41"
Column | Type | Modifiers
--------+-----------------------+-----------
id | integer |
name | character varying(32) |

skytf=> select * from test_41;
id | name
----+------
1 | a
2 | b
3 | c
(3 rows)

skytf=> select a.name,
skytf-> case when a.id=1 then 'one'
skytf-> when a.id=2 then 'two'
skytf-> else 'other'
skytf-> end
skytf-> from test_41 a ;
name | case
------+-------
a | one
b | two
c | other
(3 rows)

COALESCE 函数

COALESCE(value [, …])

  1. 如果第一个参数为非空,则COALESCE函数返回第一个参数值;
  2. 如果所有参数为空,则返回为空;
  3. COALESCE函数一般用于替换默认值为NULL的字段值;
  4. 如果第一个参数为空,则显示第二个参数的值,如果第一,二参数为空,则取第三参数的值,并按这规则判断。

COALESCE 函数用法举例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
skytf=> select coalesce (1,0);  
coalesce
----------
1
(1 row)

skytf=> select coalesce(null,1);
coalesce
----------
1
(1 row)

skytf=> select coalesce (null,null);
coalesce
----------

(1 row)

skytf=> select coalesce(null,null,2);
coalesce
----------
2
(1 row)

skytf=> select coalesce(null,3,2);
coalesce
----------
3
(1 row)

NULLIF 函数

NULLIF(value1, value2)

  1. 如果value1 等于 value2 ,则 NULLIF函数返回 null;
  2. 如果value1 值为 null, 则返回 null;
  3. 如果value2 值为 null, 则返回 value1 的值;
  4. 简单的说:如果 value1=value2 ,则返回 null,否则都返回 value1 的值。

NULLIF 函数用法举例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
skytf=> select nullif(1,1);  
nullif
--------

(1 row)

skytf=> select nullif(null,1);
nullif
--------

(1 row)

skytf=> select nullif(1,null);
nullif
--------
1
(1 row)

skytf=> select nullif(1,3);
nullif
--------
1
(1 row)

原创文章,作者:306829225,如若转载,请注明出处:https://blog.ytso.com/236409.html

(0)
上一篇 2022年1月24日
下一篇 2022年1月24日

相关推荐

发表回复

登录后才能评论