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)
postgresql----条件表达式的更多相关文章
- PostgreSQL条件表达式
条件表达式在日常工作中很多场景都会用到,比如某个字段为空,取另外一个字段:某个值大于多少,取什么字段,小于多少取什么字段等等.那么下面来简单的学习下PostgreSQL有那些条件表达式. 1.CA ...
- PostgreSQL条件表达式 case when then end
例: SELECT CASE WHEN (store_size <= (100)::NUMERIC) THEN '小店'::TEXT WHEN (store_size >= (200):: ...
- [Django]模型提高部分--聚合(group by)和条件表达式+数据库函数
前言:本文以学习记录的形式发表出来,前段时间苦于照模型聚合中group by 找了很久,官方文章中没有很明确的说出group by,但在文档中有提到!!! 正文(最后编辑于2016-11-12): 聚 ...
- Scala:条件表达式的好处
条件表达式的好处之一是:让代码更简洁,例如在一个需要根据不同条件收集不同值的场景中,多数语言提供的代码如下: ; ) { tmp = xxx; } ) { tmp = yyy; } else { tm ...
- Shell 条件表达式汇总
条件表达式 文件表达式 if [ -f file ] 如果文件存在if [ -d ... ] 如果目录存在if [ -s file ] 如果文件存在且非空 if [ -r f ...
- shell之条件表达式
conditional expressions are used by the [[ compound command and the test and [ builtin commands. ari ...
- Python学习教程(learning Python)--3.3 分支语句的条件表达式详解
本节主要讨论分支语句的条件表达式问题. 在if或者if-else分支控制语句里由于都用到条件判断(表达式是真还是假),条件判断可以是一种关系运算也可以是布尔表达式. 本节将对if及if-else语句的 ...
- golang没有条件表达式?:
详见The Go Programming Language Specification中Expressions一章中未提及此表达式, 故其不支持. 再强调一次, GO不支持条件表达式 conditio ...
- thymeleaf条件表达式
条件表达式形式:condition, then and else <tr th:class="${row.even}? 'even' : 'odd'"> ... < ...
- SQL条件表达式
需求:数据表中如果满足某个条件,返回表中所有数据,否则不返回数据. 语法:CASE 表达式是一种通用的条件表达式,类似于其它语言中的 if/else 语句. CASE WHEN condition T ...
随机推荐
- mysql数据库自增id重新从1排序的两种方法
mysql默认自增ID是从1开始了,但当我们如果有插入表或使用delete删除id之后ID就会不会从1开始了哦. 使用mysql时,通常表中会有一个自增的id字段,但当我们想将表中的数据清空重新添 ...
- OpenCV 学习笔记 04 深度估计与分割——GrabCut算法与分水岭算法
1 使用普通摄像头进行深度估计 1.1 深度估计原理 这里会用到几何学中的极几何(Epipolar Geometry),它属于立体视觉(stereo vision)几何学,立体视觉是计算机视觉的一个分 ...
- 如何永久删除git仓库中敏感文件的提交记录
如何永久删除git仓库中敏感文件的提交记录 参考: 1. https://help.github.com/articles/remove-sensitive-data/
- Resource interpreted as Stylesheet but transferred with MIME type text/plain
今天碰到了Resource interpreted as Stylesheet but transferred with MIME type text/plain 这个错误. 原因:在web中配置了f ...
- Linux系统命令缩写
命令缩写:(转) ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户 rpm:redhat package manager 红帽 ...
- 入门:移动APP中的各种导航
即使是移动应用界面的原型设计,导航的形式也可以多种多样.尽管尺寸小,又必须紧凑排列大量数据,它们似乎受到了紧密的约束,但依然有着形形色色的选择. 人们曾经一度只会考虑一种形式——流行且广泛使用的垂直导 ...
- Spring Boot 2.0 利用 Spring Security 实现简单的OAuth2.0认证方式2
0.前言 经过前面一小节已经基本配置好了基于SpringBoot+SpringSecurity+OAuth2.0的环境.这一小节主要对一些写固定InMemory的User和Client进行扩展.实现动 ...
- 4. OpenAI GPT算法原理解析
1. 语言模型 2. Attention Is All You Need(Transformer)算法原理解析 3. ELMo算法原理解析 4. OpenAI GPT算法原理解析 5. BERT算法原 ...
- oracle11g重新安装oem
1.重新设置sys sysman DBSNMP密码 alter user dbsnmp identified by **: 2.select 'drop public synonym '|| syno ...
- (转)Windows系统白名单以及UAC机制
用户帐户控制 深入了解 Windows 7 用户帐户控制 Mark Russinovich 概览: 标准用户帐户 用户帐户控制 内容 UAC 技术 提升与恶意软件安全性 Windows 7 中的不 ...