添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

SQL CASE表达式是一种通用的条件表达式,类似于其它编程语言中的 if/else 语句:

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

CASE子句可以用于任何表达式可以出现的地方。每一个condition是一个返回boolean结果的表达式。如果结果为真,那么CASE表达式的结果就是符合条件的result,并且剩下的CASE表达式不会被处理。如果条件的结果不为真,那么以相同方式搜寻任何随后的WHEN子句。如果没有WHEN condition为真,那么CASE表达式的值就是在ELSE子句里的result。如果省略了ELSE子句而且没有条件为真,结果为空。

-- Example:
postgres=# SELECT * FROM t_1 ORDER BY 1, 2;
 num | name 
-----+------
   1 | a
   2 | b
   3 | c
   4 | a
(4 rows)
postgres=# SELECT num,
postgres-#   CASE num WHEN 1 THEN 'one'
postgres-#            WHEN 2 THEN 'two'
postgres-#            WHEN 3 THEN 'three'
postgres-#            ELSE 'other'
postgres-#   END 
postgres-#   FROM t_1 
postgres-#   ORDER BY 1, 2;
 num | case  
-----+-------
   1 | one
   2 | two
   3 | three
   4 | other
(4 rows)

所有result表达式的数据类型都必须可以转换成单一的输出类型。

COALESCE

COALESCE(value [, …])
COALESCE函数返回它的第一个非空参数的值。当且仅当所有参数都为空时才会返回空。它常用于在为显示目的检索数据时用缺省值替换空值。

--Example
postgres=# SELECT coalesce(NULL, NULL, num) FROM t_1 order by 1;
 coalesce 
----------
(4 rows)

和CASE表达式一样,COALESCE将不会 计算无助于判断结果的参数;也就是说,在第一个非空参数右边的参数不会被计算。这个 SQL 标准函数提供了类似于NVL和IFNULL的能力,它们被用在某些其他数据库系统中。

NULLIF

NULLIF(value1, value2)
当value1和value2相等时,NULLIF返回一个空值。 否则它返回value1。 这些可以用于执行前文给出的COALESCE例子的逆操作:

postgres=# SELECT nullif(num::text, name) FROM t_1 order by 1;
 nullif 
--------
(4 rows)

GREATEST和LEAST

GREATEST(value [, …])
LEAST(value [, …])
GREATEST和LEAST函数从一个任意的数字表达式列表里选取最大或者最小的数值。 这些表达式必须都可以转换成一个普通的数据类型,它将会是结果类型 。列表中的 NULL 数值将被忽略。只有所有表达式的结果都是 NULL 的时候,结果才会是 NULL。

请注意GREATEST和LEAST都不是 SQL 标准,但却是很常见的扩展。某些其他数据库让它们在任何参数为 NULL 时返回 NULL,而不是在所有参数都为 NULL 时才返回 NULL。

语法:RETURN expression; 表达式 RETURN用于终止函数并把expression的值返回给调用者。这种形式用于不返回集合数据(数据集)的PL/pg SQL 函数。 (1)如果函数返回一个标量类型, 表达式 结果将自动转行成函数的返回类型。但要返回一个复合(行)值,必须写一个所需列集合的 表达式 。 createorreplac.. 以上这些都是在 PostgreSQL 中常用的拼接字符串方法。根据具体情况,你可以选择适合自己的方法来拼接字符串。使用concat_ws()函数可以合并多个字符串,并通过指定分隔符来分隔这些字符串。使用format()函数可以格式化字符串,并将多个字符串合并为一个字符串。使用concat()函数可以合并两个或多个字符串。使用||运算符也可以合并两个或多个字符串。 这篇写的是postgres,但是实际上我简单试了对于my sql 也是适用的.先简单介绍下背景,这是前几天线上的一个真实bug. 很久之前产品经理要求某个列表页排除某些类型,开发一气呵成写完上线,非常完美,突然前几天产品说现在不需要排除这几个类别了,就把要排除的配置项给清空了,结果发现列表页也空了,造成大事故啊。图文无关我检查发现问题代码大致如下const products = models.Prod... 一、 postgresql 条件 表达式 今天上班的时候,有一个哥们跑过来问我,pg有没有行转列的函数,如何实现行转列,他说他pg中没有找到,问我知道不,我想了一下,好像有,不过不像 SQL server 那么好用,但行转列很简单啊,使用多个union all 就简单搞定了啊,于是他给我看了他的问题 select id,a,b,c,d,e,f,g from biztable; 想比较 a,b,c,d,e... 本文学习 PostgreSQL COALESCE 和 NULLIF函数。COALESCE它返回第一个非空参数,并通过示例让你了解如何在select语句中有效处理空值。NULLIF需要两个参数,参数相同返回null,否则返回第一个参数。通过同时学习两个函数,可以区分两者,同时可以组合使用,增强你 SQL 的健壮性。 PostgreSQL COALESCE 函数语法 ​ COALESCE 函数语法: COALESCE (argument_1, argument_2, …); ​ 参数可以有无限个,总是返回第一个. 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、 PostgreSQL 数据库仓库链接,点击前往 4、日本著名 PostgreSQL 数据库专家 铃木启修 网站主页,点击前往 5、参考书籍:《 PostgreSQL 中文手册》 6、参考书籍:《 PostgreSQL 指南:内幕探索》,点击前往 7、参考书籍:《事务处理 概念与技术》 8、 PostgreSQL 数据库仓库链接,.