postgresql----条件表达式

postgresql支持CASE,COALESCE,NULLIF,GREATEST,LEAST条件表达式,使用它们有时候可以简化许多功能实现。

测试表

test=# create table tbl_test(id int,name varchar(32),sex varchar(1));
CREATE TABLE
test=# insert into tbl_test values(1,‘张三‘,‘m‘),(2,‘李四‘,‘m‘),(3,‘王五‘,‘f‘);
INSERT 0 3

CASE

CASE类似其他语言中的if/else等,当符合不同条件时则进行不同的运算。

示例1.查询tbl_test表,如果sex等于‘m‘则显示‘男‘,,如果是‘f‘则显示‘女‘

test=# select name,case when sex = ‘m‘ then ‘男‘ else ‘女‘ end as sex from tbl_test;
 name | sex
------+-----
 张三 | 男
 李四 | 男
 王五 | 女
(3 rows)

示例2.查询tbl_test表中男女的人数

方法1.分别查询

test=# select count(*) as 女 from tbl_test where sex = ‘f‘;
 女
----
  1
(1 row)

test=# select count(*) as 男 from tbl_test where sex = ‘m‘;
 男
----
  2
(1 row)

方法2.使用case一次查询

test=# select sum(case when sex = ‘m‘ then 1 else 0 end) as 男,sum(case when sex=‘f‘ then 1 else 0 end)as 女 from tbl_test;
 男 | 女
----+----
  2 |  1
(1 row)

coalesce

coalesce(value[,...])

入参个数不限,返回参数中第一个非NULL值。

test=# select coalesce(null,null,1,2,3);
 coalesce
----------
        1
(1 row)

test=# select coalesce(null,null,‘one‘,‘two‘);
 coalesce
----------
 one
(1 row)

NULLIF

nullif(arg1,arg2)

如果两个参数值相等则返回NULL,否则返回arg1.

test=# \pset null ‘NULL‘
Null display is "NULL".
test=#
test=#
test=# select nullif(1,1);
 nullif
--------
   NULL
(1 row)

test=# select nullif(1,2);
 nullif
--------
      1
(1 row)

GREATEST和LEAST

GREATEST(value [, ...])
LEAST(value [, ...])

入参个数不限,分别返回入参中的最大和最小值

test=# select greatest(1,2,3,4);
 greatest
----------
        4
(1 row)

test=# select greatest(‘a‘,‘b‘,‘c‘,‘d‘);
 greatest
----------
 d
(1 row)

test=# select least(‘a‘,‘b‘,‘c‘,‘d‘);
 least
-------
 a
(1 row)

test=# select least(1,2,3,4);
 least
-------
     1
(1 row)
时间: 2024-12-29 01:50:23

postgresql----条件表达式的相关文章

C# 条件表达式max=(a>b)?a:b;含义

a?b:c 这个是条件表达式,表示如果a为真,则表达式值为b,如果a为假,则表达式值为c条件表达式具体说明如下条件语句: if(a>b) max=a; else max=b; 可用条件表达式写为 max=(a>b)?a:b; 执行该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max.使用条件表达式时,还应注意以下几点:1) 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符.因此 max=(a>b)?a:b 可以去掉括号而写为 max=a>b?a:

Python基础之条件表达式、运算符

1.条件表达式: if..elif...else 2.运算符 a+=b #等效a=a+b,相加  a-=b #等效a=a-b,相减  a*=b #等效a=a*b,相乘 a/=b #等效a=a/b,相除 a%=b #等效a=a%b,取模 a**=b #等效a=a**b,幂赋值运算 a//=b #等效a=a//b,取整除赋值运算 He.py #coding=utf8 #逻辑表达式 def show1(): age=19 if age<0: print("未知") elif (age&

从头认识Spring-1.15 对SpEl的值的操作(3)-逻辑运算以及条件表达式

这一章节我们来讨论一下对SpEl的逻辑运算以及条件表达式. 1.domain 烤炉类:(修改了toString方法,因为配置文件的表达式需要只返回跟Bean的id相同的name的属性值) package com.raylee.my_new_spring.my_new_spring.ch01.topic_1_18; public class Oven { private String name = ""; private double size = 0; private boolean

编译错误 error C2451: “std::_Unforced”类型的条件表达式是非法的

part 1 编译器 vs2015 VC++. 完整的错误信息粘贴如下: d:\program files (x86)\microsoft visual studio 14.0\vc\include\algorithm(43): error C2451: “std::_Unforced”类型的条件表达式是非法的 完整代码: struct Bigger { bool operator() (vector<string>::size_type lhs, vector<string>::

以多态取代条件表达式

1.案例 话说最近直播很火嘛,反正我今天已经看了一晚上大胸了 我们看到,直播间里大致分为3类观众: 1.普通观众 2.房管 3.超管 如何区分这三种观众呢?我们发现,普通观众只显示自己的昵称,房管在自己的昵称前面还有一个醒目的“房管”标记,当然,超管的昵称前有个醒目的“超管”标记.看直播的都希望自己有个标记,因为这样才能装13啦... 2.条件表达式 现在,我们通过编写代码来区分这3种观众. 1.编写3个类. class CommonAudience; //普通观众 class HouseMan

less引入、关键字、条件表达式、循环、合并属性

引入:可以引用其他文件使用其变量 用法:@import ”main“//引入main.less文件 可以带参数:默认once @import(reference)”main“/引用但不输出     @import(inline)”main“/引用但不操作,不能使用其变量 @import(less)”main“/将引入文件当成less处理 @import(css)”main“/将引入文件当成css处理,引入css时是不操作的,原样输出 @import(multiple)”main“/允许引用多次相

【重构学习】08 条件表达式的重构

所谓条件表达式,就是分支语句,去掉分支语句咯 1.分解条件表达式 修改点:你有一个复杂的条件语句(就是if else语句) 做法:将条件表达式的三个部分分别提炼出独立函数 即 if (A部分) { B部分; } else { C部分; } 这三个部分都提炼成函数就好了. 2.合并条件表达式 修改点:你有一系列测试,都得到相同结果 做法:将这些测试合并成一个条件表达式,并将这个表达式提炼成一个独立函数 3.合并重复的条件片段 修改点:在条件表达式的每个分支上有着相同一段代码 做法:将这段重复代码搬

重构摘要9_简化条件表达式

<重构-改善既有代码的设计>Martin Fowler 摘要: 第九章 简化条件表达式 Decompose Conditinal 分解条件表达式 你有一个复杂的条件(if-then-else)语句 从三个段落中分别提炼出独立函数 Consolidate Conditional Expression 合并条件表达式 你有一系列条件测试,都得到相同结果 将这些测试合并成为一个条件表达式,并将这个条件表达式提炼成为一个独立函数 检查用意更清晰,有时也不用这么做 Consolidate Duplica

简化条件表达式

1.分解条件表达式:a.将判断条件独立函数:b.将分支段落独立函数: 2.合并条件表达式:a.使用逻辑或/与:b.三元表达式 3.合并重复的代码片段 4.移除控制标记:a.找出对标记变量赋值的语句,代之break或continue:b.extract method,以return返回控制标记 5.以卫语句取代嵌套条件表达式: 精髓:给某一条分支以特别的重视 比较:if-then-else则是同等重要 方式:将条件反转,最后考虑去除零时变量 6.以多态取代条件表达式: a.extract meth

c语言:条件表达式的应用

条件表达式的应用 #include <stdio.h> int main() { int a,b; printf("请输入a的值:"); scanf("%d",&a); (a > 5) ? (b = 3) :( b = -3); printf("%d\n",b); return 0; } 结果: 请输入a的值:6 3 请按任意键继续. . .