oracle 常用函数

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.

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值