ITPub博客

首页 > 数据库 > Oracle > oracle 系统自带几个常用函数

oracle 系统自带几个常用函数

原创 Oracle 作者:who520 时间:2019-10-22 12:03:16 1 删除 编辑

今天给各位刚入门的oracle sql的朋友说一些系统自带的常用函数,通过函数来实现某些效果会非常的省事便捷,函数可以用在适当的dml语句和查询语句中。


我们今天所有的示例都为scott模式下的emp表,下面是该表的当前数据


一 substr()函数

说明

1.substr()函数为字符串截取函数

2.需要传输三个参数,分别是指定截取字符串,指定开始截取位置,和截取长度,来得出需要的结果

3.起始截取位置都是从左开始数,如果想从右边开始则需要在指定起始位置前面写负号

4.无论从左还是右开始截取,截取位数始终是从指定位置从左往右数

5.如果指定的截取个数大于原有的字符长度,则会从指定位置截取到最后一位为止


基本语法

select substr(string [-]int,int) from tab;


示例1

通过截取job字段

默认从左边开始第一个字符截取,截取3位


示例2

从右开始第二个字符,截取3位


示例3

指定截取长度大于字符串剩余长度



二、max()函数

说明

1.求出一列的最大值

2. 只需要传入要计算的列名

3. 计算时候会自动抛开为null的值

4.只能传入一列作为参数



基本语法

select max(col) from tab;


示例

求出最大的empno


三、min()函数

说明

1.求出一列的最小值

2.只需要传入要计算的列名

3. 计算时候会自动抛开为null的值

4.只能传入一列作为参数


基本语法

select  min(col) from tab;



示例

求出最小的mgr列值



四、sysdate

说明

1.sysdate可以得出当前的系统时间,会精确到时分秒(当然这个系统顾名思义是系统上的时间,如果系统时间是错的,那么得出的也就是错的)

2.sysdate 在where中使用的场景更多

3.如果查询当前时间建议使用基表dual(用其他表也可以,但是会跟根据表中的行数而显示多次)


基本语法

select sysdate from dual;
或
select  *  from tab where col=sysdate;



示例1

查询当前系统时间


示例2

在where条件中使用

(查询雇佣日期早与当前时间的员工信息)




五、trunc()函数

说明

  1. 可以对数字和日期字段进行截取

  2. 对于数字截取默认返回整数,对于时间截取会舍去时分秒

  3. 必要传入进行处理的时间或者数字格式的字段或者字符串,可选参数用来控制显示结果

  4. 对于返回数字来说必须,要控制返回的小数必须为非0,否则不会显示小数

  5. 对于数字来说,不会四舍五入


基本语法

select trunc(sysdate[,'yyyy'|,'mm'|,'dd']) from dual;
或
select  trunc(col[,int])  from tab;


截取时间示例

示例1

截取当前时间


示例2

截取当前时间返回该年第一天


示例3

截取当前时间返回,该月第一天


示例3

截取当前时间返回,该时间字段的年月日,等同于不加任何参数



数字截取示例

示例1

返回整数



示例2

保留一位小数

(由于小数一位小数正好是0,所以不会显示小数结果)


正常的显示结果



示例3

整数取舍

(将指定位数前加上符号,则会指定整数部分变成0)





六、to_date()


说明

  1. 将字符串转换成为时间格式

  2. 必须明确指定时间格式

  3. 字符串或字段值必须满足指定的时间格式

  4. 在where条件中使用情况较多


基本语法

select to_date('xxxxxxxxxxxxxx','YYYY-MM-DD H24:MI:SS') from dual;
或
select  to_date(col,'YYYY-MM-DD') from tab;



示例1

将字符串转换成为时间




七、to_char()


说明

  1. 将时间格式转换成字符串格式

  2. 可以指定转换格式,在指定的格式必须满足可以将日期转换过来

  3. 在where条件中使用情况较多


基本语法

select to_char('xxxx-xx-xx xx:xx:xx') from dual;
或
select  to_date(col,'YYYY-MM-DD') from tab;


示例

将emp的hiredate字段转换为字符



八、upper()


说明

将字符串或者字段值全部转换为大写


基本语法

select upper('xxxx') from dual;
或
select  upper(col) from tab;


示例

转换字符串大写



九、lower()


说明

将字符串或者字段值全部转换为小写


基本语法

select lower('xxxx') from dual;
或
select  lower(col) from tab;


示例

将emp表的job字段转换为小写



十、sum()


说明

  1. 求出数值字段类型一列的总和

  2. 只能传入一个字段进行求和


基本语法

select  sum(col) from tab;


示例

求出emp所有人的工资总和


十一 count()

说明

  1. 统计检索结果的返回条数

  2. 根据不同的条件返回结果数不同,如果没有条件则代表统计全表条数


基本语法

select  count(*) from tab;
或
select  count(*) from tab where col1>'xxxxx';


示例1

统计emp表总数

示例2

统计部门编号为20的所有员工数




十二、distinct

说明

  1. 消除一列中重复的值

  2. 可以有多个字段,确保组合值是唯一的


基本语法

select  distinct col [,col1,col2...] from tab;


示例1

消除emp表中mgr重复的


示例2

消除emp表中mgr和job重复的



十三、group by 

说明

  1. 用来分组显示,每个组和确保是唯一的

  2. 分组在查询末尾用,查询的字段必须是分组的字段

  3. 如果用来分组统计可以用having 来过滤统计结果


基本语法

select   col1 [col2,col3...] from tab group by col1 [col2,col3...]  [having....];



示例1

用来查询分组emp表的mgr和job字段

示例2

统计分组

(统计每个部门中有多少员工)


示例3

统计过滤

(按照上述统计过滤结果大于4的)





    写在最后,这些函数都是oracle自带的一些常用的基本函数,通过函数得到我们想要的结果是非常便捷的。希望能跟各位朋友多交流oracle知识。



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20893138/viewspace-2660804/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
学而不思则罔,思而不学则殆

注册时间:2019-10-15

  • 博文量
    3
  • 访问量
    4540