首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle应用实战六——函数+集合

Oracle应用实战六——函数+集合

作者头像
Java帮帮
发布2018-03-19 16:12:17
9290
发布2018-03-19 16:12:17
举报

函数

字符函数

接收字符输入返回字符或者数值,dual是伪表

1. 把小写的字符转换成大小的字符

upper('smith')

2. 把大写字符变成小写字符

lower('SMITH')

3. 把首字符大写

initcap('smith')

4. 字符串的连接可以使用concat可以使用“||”建议使用“||”

concat('hello', 'world')

5. 字符串的截取,使用substr,第一个参数是源字符串,第二个参数是开始索引,第三个参数长度,开始的索引使用1和0效果相同(掌握)

substr('hello', 1,3)

6. 获取字符串的长度

length('hello')

7. 字符串替换,第一个参数是源字符串,第二个参数被替换的字符串,第三个是替换字符串

replace('hello', 'l','x')

数值函数

1.四舍五入函数:ROUND()

默认情况下ROUND四舍五入取整,可以自己指定保留的位数。

2.数值截取:TRUNC(),默认全部去掉小数,也可以指定保留的位数

3.取余数:MOD()

日期函数

Oracle中提供了很多和日期相关的函数,包括日期的加减,在日期加减时有一些规律

日期 – 数字 = 日期

日期 + 数字 = 日期

日期 – 日期 = 数字

1. 范例:查询雇员的进入公司的周数。

分析:查询雇员进入公司的天数(sysdate – 入职日期)/7就是周数

2. 获得两个时间段中的月数:MONTHS_BETWEEN()

范例:查询所有雇员进入公司的月数

3. 获得几个月后的日期:ADD_MONTHS()

范例:求出三个月后的日

转换函数

1. TO_CHAR:字符串转换函数 (掌握)

范例:查询所有的雇员将将年月日分开,此时可以使用TO_CHAR函数来拆分

拆分时需要使用通配符

年:y, 年是四位使用yyyy

月:m, 月是两位使用mm

日:d, 日是两位使用dd

在结果中10以下的月前面被被补了前导零,可以使用fm去掉前导零

TO_CHAR还可以给数字做格式化

范例:把雇员的工资按三位用“,”分隔,在oracle中“9”代表一位数字

如果在钱的前面加上国家的符号可以使用“$”代表是美元,如果要使用本地的钱的单位使用“L”

2. TO_NUMBER:数值转换函数

TO_NUMBER可以把字符串转换成数值

3. TO_DATE:日期转换函数

TO_DATE可以把字符串的数据转换成日期类型

通用函数

1.空值处理nvl

范例:查询所有的雇员的年薪

我们发现很多员工的年薪是空的,原因是很多员工的奖金是null,null和任何数值计算都是null,这时我们可以使用nvl来处理。

2.Decode函数

该函数类似if....else if...esle

语法:DECODE(col/expression, [search1,result1],[search2, result2]....[default])

Col/expression:列名或表达式

Search1,search2...:用于比较的条件

Result1, result2...:返回值

如果col/expression和Searchi匹配就返回resulti,否则返回default的默认值

范例:查询出所有雇员的职位的中文名

3.case when

CASE expr WHEN comparison_expr1 THEN return_expr1

[WHEN comparison_expr2 THEN return_expr2

WHEN comparison_exprn THEN return_exprn

ELSE else_expr]

END

select t.empno,

t.ename,

case

when t.job = 'CLERK' then

'业务员'

when t.job = 'MANAGER' then

'经理'

when t.job = 'ANALYST' then

'分析员'

when t.job = 'PRESIDENT' then

'总裁'

when t.job = 'SALESMAN' then

'销售'

else

'无业'

end

from emp t

聚合函数

1.统计记录数count()(掌握)

范例:查询出所有员工的记录数

不建议使用count(*),可以使用一个具体的列以免影响性能。

2.最小值查询min()

范例:查询出来员工最低工资

3.最大值查询max()

范例:查询出员工的最高工资

4.查询平均值avg()

范例:查询出员工的平均工资

5.求和函数sum()

范例:查询出20号部门的员工的工资总和

集合操作

并集

UNION

UNION ALL

范例:工资大于1500,或者是20号部门下的员工

select * from emp where sal>1500 UNION select * from emp where deptno=20

交集

INTERSECT

范例:工资大于1500,并且是20号部门下的员工

select * from emp where sal>1500 intersectselect * from emp where deptno=20

差集

MINUS

范例:1981年入职的普通员工

select * from emp where to_char(hiredate ,'yyyy')='1981'minusselect * from emp where job='MANAGER' or job='PRESIDENT';

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java帮帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.空值处理nvl
  • 2.Decode函数
  • 3.case when
  • 1.统计记录数count()(掌握)
  • 2.最小值查询min()
  • 3.最大值查询max()
  • 4.查询平均值avg()
  • 5.求和函数sum()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档