oracle 常用函数

oracle 常用函数oracle 常用函数 1 decode 和 casewhendeco a 1 aaa 2 bbb ccc 就是 if 字段 a 1thenaaaelse 2thenbbbelse 1then aaa whena 2 then bbb else ccc enddecode

oracle 常用函数

1.decode和case when

decode (a,’1′,’aaa’,’2′,’bbb’,’ccc’)

就是if 字段a = 1 then aaa

else if a=2 then bbb

else ccc

 case when a=1 then ‘aaa’

when a=’2′ then ‘bbb’

else ‘ccc’ 

end

decode只能在oracle里面用,mysql不行,sqlplus不行,case when是可以在别的数据库里面用的

decode只能做相等判断,case when 可以做大于小于大于等于什么的那种判断,还有is null,is not null

case when 用在存储过程里面的时候end后面要加上case,就是 end case

2.concat 和|| 

concat只能连接两个,||能连接好多

concat(a,b)

concat(‘a’,’b’)

a||b||c||d

有case when在select里面的时候不能直接用||或者是concat,要做一个子查询把结果先查出来再拼接

3.instr

instr(a,b,c,d)

a是要查的,b是查什么,c是从第几位开始查,d是查到第几个的时候返回

4.replace

replace(x,old,new)

把x里面的old换成new

5.substr

substr(x,start,length)

截取x,从start开始截取length位

6.length

length(x)

返回x的长度

7.ltrim,rtrim,trim

ltrim(a,’a’)

去掉a字段左边的a,如果有连续的a就全都去掉

rtrim(a,’a’)

去掉a字段右边的a,如果有连续的a就全都去掉

trim(‘a’ from a)

去掉两边的a,如果有连续的a就全都去掉,一般用来去掉空格写法是trim(a),a是字段名

以上三个只能去除单个字符,比如想去掉字段a里面的字符串abc是不可以的,但想去掉字段a里面连续的aaaaa是可以的

8.merge into

MERGE INTO ABCD T1

USING (SELECT A,B,C  FROM ABC WHERE D = ‘1’ ) T2

ON (T1.A = T2.A)

WHEN MATCHED THEN 

UPDATE SET T1.B = T2.B;

WHEN NOT MATCHD THEN 

INSERT (A,B,C) VALUES (T1.A,T1.B,T1.C);

解释:on是两个表的关联条件,当满足on里面的条件时,执行update,不满足执行insert,inset里面的值要在using里面的select中查出来,否则提示字符无效

9.upper和lower

更改大小写

SELECT UPPER(‘AAAaaa’) FROM DUAL;

会显示全是大写的A

SELECT LOWER(‘aaaAAA’) FROM DUAL;

会显示全是小写的a

10.NVL

SELECT NVL(A,’000′) FROM ABC

解释:当字段A里面有值就输出字段A本身的值,没有值时输出000

11.union 和union all

SELECT * FROM ABC UNION SELECT * FROM ABCD;

解释:将SELECT * FROM ABC 的结果和SELECT * FROM ABCD;的结果去重后拼接在一起输出

SELECT * FROM ABC UNION ALL SELECT * FROM ABCD;

解释:将SELECT * FROM ABC 的结果和SELECT * FROM ABCD;的结果直接拼接在一起输出

12.wm_concat

列转行函数

SELECT WM_CONCAT (D) FROM ABCD;

解释:将表abcd里面的字段d里面的所有值拼接在一起,成为一个行的形式

13.找到包含最大值和最小值的记录

SELECT CLIENT_SHORT,ACTUAL_BAL

  FROM (

              SELECT CLIENT_SHORT,

                             ACTUAL_BAL,

                             MAX(ACTUAL_BAL) OVER() MAX_BAL,

                             MIN(ACTUAL_BAL) OVER() MIN_BAL

                 FROM FSD.RB_ACCT) X

WHERE ACTUAL_BAL IN (MAX_BAL,MIN_BAL)

14.rank() / dense_rank() over(partiiton by .. order by ..)

rank() 是跳跃排序,有两个第一,接下来是第三

dense_rank()是连续排序,有两个第一,接下来是第二

partition by是按哪个字段分组,order by 是按哪个字段排序

15.

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230319.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月5日 下午6:01
下一篇 2026年3月5日 下午6:22


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号