GREATEST 取最大值
GREATEST(n1,n2,…n) 返回序列中的最大值
SELECT GREATEST(15,5,75,8) "Greatest" FROM DUAL;
结果:75
LEAST 取最小值
LEAST(n1,n2…n) 返回序列中的最小值
SELECT LEAST(15,5,75,8) LEAST FROM DUAL;
结果:5
NULLIF 空判断函数
NULLIF(c1,c2) NULLIF 也是个很有意思的函数。逻辑等价于:CASE WHEN c1 = c2 THEN NULL ELSE c1 END
SELECT NULLIF('a','b'),NULLIF('a','a') FROM DUAL;
结果:a,null
TRANSLATE 高级relace
TRANSLATE是REPLACE所提供的功能的一个超集
select translate('123abcd','2dc','4e') from dual;
结果:143abe
分析:例子的字符里的2会替换为4,d会替换成e,c对应的位置不存在替换,经常用到指定字符替换为指定字符较多的情况下
COALESCE 空值处理
COALESCE(expression_1, expression_2, …,expression_n)遇到非null值即停止并返回该值,如果所有的表达式都是空值,最终将返回一个空值。
SELECT COALESCE(NULL,1,null,4,5) FROM dual
结果:1
等价于
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
…
WHEN (expressionN IS NOT NULL) THEN expressionN
ELSE NULL
解决多次需要case when 判断null的场景
LISTAGG 列转行
LISTAGG() 函数是在oracle 11g 版本中新增的,LISTAGG()是一个实现字符串聚合的oracle内建函数
SELECT LISTAGG(字段1,分隔符) WITHIN GROUP (ORDER BY 字段2) FROM 库名.表名