ORACLE常用函数

知道了基础查询语句,就需要了解与其相关的一些常用函数,根据我自己了解过的知识而言大概分为单行函数,分组函数。下面我就以单行和分组两个部分来整理了它的一些知识用法。
单行函数顾名思义它只对只对一行进行变换,每行返回一个结果。它包括字符.数值.日期.转换.通用。
字符函数有大小写控制函数,字符控制函数。LOWER转大写为小写,upper转小写为大写。
(select lower(last_name) from employees).再说字符控制函数,它的种类就多余前者。
①CONCAT 连接字符串要显示全名,前面用到过||字符串连接符,当然也可以用concat。
(select concat(last_name,first_name) from employees)
②SUBSTR 截取指定的字符串位置。(select substr(‘last_name’,1,5) from employees)
③LENGTH字符串长度,(select length(‘last_name’) from employees)
④INSTR(select instr(‘last_name’,‘n’) from employees)判断字符的位置
⑤LPAD(select LPAD(salary,10,’’) from employees)左补齐⑥RPAD右补齐 用法同左补齐
⑦TRIM去除选中部分,如果没有特别指令,就是去掉字符多余空格
select TRIM(‘l’ FROM ‘last_name’) from employees
⑧REPLACE替换。select REPLACE(‘last_name’,‘a’,‘z’) from employees。
数值的数字函数也是跟数学中一样的,比如说有四舍五入ROUND,截断TRUNC,求余MOD
SELECTROUND(45.923,2),TRUNC(45.923,0),MOD(45.923,-1)FROMDUAL
日期和转换放在一起说,因为日期上用到转换比较多。我们在数据库查询中常见的有日期格式,时间格式亦是日期时间格式一同出现的几种形式。查询时如果需要查询的该表中有这类似的字段 就直接在Select后写上要查询的日期时间值。日期可做数学运算。比如我学过的一个例子SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKSFROM employees WHERE department_id = 90; 90号部门入职到现在工作了多少个周。还有几个日期函数:MONTHS_BETWEEN 两个日期相差的月数
ADD_MONTHS:向指定日期中加上若干月数,NEXT_DAY:指定日期的下一个星期 * 对应的日期
LAST_DAY:本月的最后一天 ROUND:日期四舍五入,TRUNC:日期截取。拿其中的几个举个例子
(Eg:如果员工试用期6个月,查询入职日期,入职日期后的第一个星期一,入职当月的最后一天日期。select job_id,last_name,add_months(hire_date,6),hire_date,next_day(hire_date,‘星期一’),last_day(hire_date) from employees)
在这里插入图片描述
再说转换,有To_char,To_date
(To_char函数对日期的转换 注意大小写敏感,用单引号括住,日期间用逗号隔开。Eg:显示姓名、hiredate 和雇员开始工作日是星期几select
concat(last_name,first_name),hire_date ,to_char(hire_date,‘day’) from employees
在这里插入图片描述
To_char也可对数字转换,它有几个几种常用格式。9 数字,0 零,$美元 ,L 本地货号符,.小数点,, 千位符eg:将员工工资按如下格式显示:123,234.00 RMB 。
select salary, to_char(salary,‘L999,999.99’)||‘RMB’ salary from employees
在这里插入图片描述
To_date 函数对字符的转换 ,可将字符转化成数字eg:计算2000年1月1日到现在有多少月,多少周
select distinct round(months_between(sysdate,to_date(‘1-1-2000’))),round((sysdate-to_date(‘1-1月-2000’))/7)
from employees)
在这里插入图片描述
转换函数之后还有个通用函数,这些函数适用于任何数据类型,同时也适用于空值:
NVL (expr1, expr2)将空值转换为已有的值;
NVL2 (expr1, expr2, expr3),NVL2 (expr1, expr2, expr3) : expr1不为NULL,返回expr2;为NULL,返回expr3,NULLIF (expr1, expr2) NULLIF (expr1, expr2) : 相等返回NULL,不等返回expr1
COALESCE (expr1, expr2, …, exprn)
单行函数中还有一个条件表达式(Case when表达式相当于在 SQL 语句中使用IF-THEN-ELSE 逻辑Eg:在员工表中查询出员工的工资,并计算应交税款:如果工资小于1000,税率为0,如果工资大于等于1000并小于2000,税率为10%,如果工资大于等于2000并小于3000,税率为15%,如果工资大于等于3000,税率为20%。
select salary,
case when salary < ‘1000’ then salary
0 when salary> ‘1000’ and salary<‘2000’ then salary0.1
when salary>= ‘2000’ and salary<='3000’then salary
0.15 when salary >= ‘3000’ then salary0.2
else salary end from employees)
在这里插入图片描述
在这里插入图片描述
可以对任意数据类型的数据使用 MIN 和 MAX 函数。COUNT(
) 返回表中记录总数,适用于任意数据类型。※组函数忽略空值。※在组函数中使常用函数当然还有分组函数。
组函数类型有AVG,COUNT,MAX,MIN,SUM,可以对数值型数据使用AVG 和 SUM 函数。
Eg:查询公司员工工资的最大值,最小值,平均值,总和
select max(salary),min(salary),avg(salary),sum(salary)from employees
用NVL函数 NVL函数使分组函数无法忽略空值。
记录总数的过程中,我们也可以使用去重关键词。
在分组查询的过程中 ,如果有的字段未使用组函数类型,它会提示报错,该字段不是单组分组函数
在这里插入图片描述
这时候想要查询进行顺利,就需要Group by子句语法。在SELECT 列表中所有未包含在组函数中的列都应该包含在 GROUP BY 子句中。例如
在这里插入图片描述
前面所说的是单个列的分组函数,在多个列中,分组函数也是可以使用的。我们的的查询过滤条件一般都是where。但是在分组函数中不能在 WHERE 子句中使用组函数。这时我们可以使用另外一过滤分组HAVING语句使用 HAVING 过滤分组:
Eg:查询各个管理者手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内
在这里插入图片描述
单组函数和分组函数是在Orcale数据查询中非常常用的函数,同样也是必掌握的基础知识。这些函数用法都很简单,难的是在平时的查询过程中,很容易就忘记了什么地方该用什么函数,或者说是没有一下想到此处应该用到它,为了避免这种情况的发生,在学习的过程中就要多加练习,多写一点查询的语句我觉得久而久之我们对这些函数的应用就可以到达信手拈来的地步。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值