Oracle数据库常用函数玩法整理

Ps: 我所遇到的,我所理解的

1、nvl(参数1,参数2)

详解:
若参数1不为空,返回参数1本身,参数1为空,则返回参数2
扩展:nvl(参数1,参数2,参数3)
若参数1为空,返回参数3,参数1不为空,返回参数2

2、instr(s1,s2,[start_position],[sum])

详解:
字符串查找函数,在s1中找s2的出现的位置(查找是从下标1开始的),其中[start_position]可选,表示在s1上开始查找的字符位置,默认是1;[sum]可选,表示查找的s2在s1中出现的次数,默认是1

3、to_char(参数1,参数2)

详解:
将数字型、日期型转换为字符型

举个栗子:
将日期型转换为字符型

select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;
2021/05/21 6:40:15

将数字型转换为字符型

to_char(value)
-- 其中value是数字型,转换成同类型后用于比较

4、to_date(参数1,参数2)

详解:
将数字型、日期型转换为字符型
举个栗子:

select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;
2021/05/21 6:40:15

5、Oracle递归

详解:
select 查询字段
from 表名
[where] 筛选条件
start with 起始条件
connect by 递归条件
可以和算法中的递归中联想起来
举个栗子:

table
id		name	 parentId
1		爷爷
2		爸爸		 1
3		儿子		 2
4		女儿		 2
5		孙子	     3
6		孙女	     3
7		外孙子	     4
8		外孙女  	 4
 select id from table
 start with id = 2
 connect by prior id = parentId

根据当前id的记录作为初始条件,以及递归条件: prior翻译先前的,先前的id,这里理解为前一个记录的id作为父id找它的下一条记录(子记录)

结果:

id
2
3
5
6
4
7
8

当递归条件不同的时候呢,查询结果会不会不一样

 select id from table
 start with id = 2
 connect by prior parentId = id

根据当前id的记录作为初始条件,以及递归条件: prior翻译先前的,先前的parentId,这里理解为前一个记录的parentId作为来id找它的下一条记录(父记录)

结果:

id
2
1

6、case when then else end用法

详解:
可用于查询结果时将数字 转换为 你想显示的结果

case 
	when 条件 then 条件满足时的显示的结果
	when 条件 then 条件满足时的显示的结果
	when 条件 then 条件满足时的显示的结果
	[else] 以上都不满足时显示的结果 
end

举个栗子

table
id  name    is_girl
1   李知恩   1
2   胡歌     0
3   周冬雨   0
4   赵丽颖   0
select id,name,
(case
	when is_girl = '1' then '女孩'
	when is_girl = '0' then '男孩'
	else '变态'
end) sex 
from table

结果:

table
id  name    sex
1   李知恩   女孩
2   胡歌     男孩
3   周冬雨   女孩
4   赵丽颖   女孩

7、row_number over(partition by 分组字段 order by 排序字段 [asc/desc])

详解:
表示按照 分组字段进行分组后,组内按照 排序字段 进行排序。其中这个函数生成的字段是每组间的编号,从1开始,每次加一,不能重复
举个栗子:

table
id  name    value
1   李知恩   1
2   胡歌     2
3   彭于晏   2
4   赵丽颖   1
select *,row_number over(partition by value order by id) 
from table

结果:

table
id  name    value number
1   李知恩   1    1
4   赵丽颖   1    2
2   胡歌     2    1
3   彭于晏   2    2

8、decode用法

详解:
decode(参数,条件值1,返回值1,条件值2,返回值2,条件值3,返回值3,…,否定值)

参数等于条件值1,则此函数返回 返回值1,以此类推,…,参数都不满足条件,返回 否定值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值