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 ...
随机推荐
- 4种事务的隔离级别,InnoDB怎样巧妙实现?
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/z50L2O08e2u4afToR9A/article/details/82186189 事务ACID ...
- Redis更新的正确方法
原文(缓存更新的套路):看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中.然而,这个是逻辑是错误的.试想,两个并发操作,一个是更新操作,另一个是查询操 ...
- 从网上找的Android实用代码,记录备用
1.获取应用程序下所有Activity public static ArrayList<String> getActivities(Context ctx) { ArrayList< ...
- angularjs 动态表单, 原生事件中调用angular方法
1. 原生事件中调用angular方法, 比如 input的onChange事件想调用angular里面定义的方法 - onChange="angular.element(this).sco ...
- Duplicate复制数据库并创建物理StandBy(pfile版本)
1设定环境如下: Primary数据库 IP 172.17.22.16 SID orcl Standby数据库 IP 172.17.22.17 SID orcl 设置提示,以区分操作的位置 prima ...
- 利用fstream进行文件拷贝测试
今天翻到一个早期写测试代码的目录,找到几个以前的测试代码,于是拿出来贴到博客中.(只是简单的测试,并不严谨.注意这里windows和linux的硬件环境不一样) 这一个是使用fstream进行文件拷贝 ...
- 为Docker容器设置http代理
以下内容复制自:传送门 ,可以直接去该地址查看. HTTP/HTTPS proxy The Docker daemon uses the HTTP_PROXY, HTTPS_PROXY, and NO ...
- C#中的Action<>和Func<>
其实他们两个都是委托[代理]的简写形式. 一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的代码: public delegate void myDeleg ...
- Diocp截图
跑了个数据库的查询和插入,删除. Http SVR DEMO http://123.232.98.202:8081/
- JS中的Map和Set实现映射对象
使用iterable内置的forEach方法 var a = ['A', 'B', 'C']; a.forEach(function (element, index, array) { // elem ...