007.Oracle函数

无奋斗不青春

我 的 个 人 主 页: 失心疯的个人主页
入 门 教 程 推 荐 : Python零基础入门教程合集
虚 拟 环 境 搭 建 : Python项目虚拟环境(超详细讲解)
PyQt5 系 列 教 程: Python GUI(PyQt5)文章合集
Oracle数据库教程: Oracle数据库文章合集
优 质 资 源 下 载 : 资源下载合集
优 质 教 程 推 荐: Python爬虫从入门到入狱系列 合集

分隔线

这里写目录标题

        • Oracle函数
        • 示例表数据
        • 字符函数
        • 数学函数
        • 转换函数
        • 系统函数
        • 日期函数
        • 小课堂

Oracle函数
分类 函数 说明 参数
分组函数 Max 最大值 Max(字段名)
Min 最小值 Min(字段名)
Sum 求和 Sum(字段名)
Count 计数 Count(字段名)
Avg 平均值 Avg(字段名)
字符函数 Lower 将字符串转换为小写 Lower(char)
Upper 将字符串转化为大写 Upper(char)
Length 返回字符串的长度 Length(char)
Substr 取字符串的子串 Substr(char,pos,[len])
Replace 用新字符串替换部分字符串 Replace(char,old_char,new_char)
Instr 获取子串在字符串的位置 Instr(char,findchar[,n[,m]])
Lpad 字符串左侧补齐到指定长度 Lpad(char,m,'str')
Rpad 字符串右侧补齐到指定长度 Rpad(char,m,'str')
数学函数 Round 四舍五入 Round(n, [m])
Trunc 截取数字 Trunc(n, [m])
Mod 取模 Mod(m, n)
Floor 返回小于或等于n的最大整数 Floor(n)
Ceil 返回大于或等于n的最小整数 Ceil(n)
Abs 返回绝对值 Abs(n)
其他 Cos、Cosh、exp、ln、log、sin、sinh、sqrt、tan、tanh、acos、asin、atan、power
日期函数 Sysdate 返回系统日期 Sysdate
Add_months 返回指定日期d增加指定月数n后的日期 Add_months(d,n)
Last_day 返回指定日期d所在月份的最后一天 Last_day(d)
转换函数 to_char 转换为字符串 to_char()
to_date 将字符串转换为日期 to_date(char,'yyyy-mm-dd')
系统函数 sys_context 获取系统信息 sys_context('userevn','db_name')
判断函数 decode 如果expression=value,则输出result1,否则输出result2 decode(expression,value,result1,result2)
如果expression=value1,则输出result1,expression=value2,输出reslut2,expression=value3,输出result3 decode(expression,value1,result1,value2,result2,value3,result3......,default)
sign() 参数与0的比较
大于0则返回1,等于0则返回0,小于0则返回-1
sign(1-2)
---
示例表数据

字符函数
  • Replace函数

  • 语法:Replace(char,old_char,new_char)

  • 用新字符串(new_char)串替换指定字符串(old_char)

    select ename, replace(ename,'A','新') as "new_name" from emp
    
  • Instr函数

  • 语法:Instr(char,findchar[,n[,m]]

  • 从字符串(char)中指定位置(n)开始查找指定字符串(findchar)第m次出现的位置

    select ename, instr(ename,'A',1, 2) as "new_name" from emp
    
数学函数
  • Round函数

  • 语法:Round(n, [m])

  • 用于执行四舍五入

    • 如果省略m,则四舍五入到整数
    • 如果m是正数,则四舍五入掉小数点m位后的数字
    • 如果m是负数,则四舍五入掉小数点前m位数字
      select sal,round(sal),round(sal,2),round(sal,-2) from emp where empno in ('8002','8003');
      
  • Trunc函数

  • 语法:Trunc(n, [m])

  • 截取数字

    • 如果省略m,则截取整数部分,去掉小数
    • 如果m是正数,则截取掉小数点m位后的数字
    • 如果m是负数,则截取掉小数点前m位的数字
      select sal,trunc(sal),trunc(sal,2),trunc(sal,-2) from emp where empno in ('8002','8003');
      
  • 其他数学函数

    • acos(n):返回数字的反余旋值
    • asin(n):返回数字的反正旋值
    • atan(n):返回数字的反正切
    • con(n)
    • exp(n):返回e的n次幂
    • log(m,n):返回对数值
    • power(m,n):返回m的n次幂
转换函数
  • 转换函数用于将一种数据类型从一种转为另一种。在某些情况下,oracle server允许值的数据类型和实际的不一样,这时oracle server会隐含的转化数据类型
    create table t1(id int);
    insert into t1 values('10') ——> oracle会自动将'10'转换成10
    
    create table t2(id varchar2(10));
    insert into t2 values(10) ——> oracle会自动将10转换为'10'
    
  • 但是隐含转换并不适应所有的情况,为了提高程序的可靠性,我们应该使用转换函数进行转换
  • to_char
  • dual:oracle自带的临时表,用于数据测试
    • yy:两位数的年份
    • yyyy:四位数的年份
    • mm:两位数的月份
    • dd:两位数的天
      select to_char(sysdate,'yyyy-mm-dd') as "日期" from dual;
      返回结果:20-12-11
      
      select to_char(sysdate,'yyyy-mm-dd') from dual
      返回结果:2020-12-11
      
    • hh24:24小时制显示小时
    • hh12:12小时制显示小时
    • mi:显示分钟
    • ss:显示秒
      select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as "日期" from dual;
      返回结果:2020-12-11 22:29:42
      
      select to_char(sysdate,'yyyy-mm-dd hh12:mi:ss') as "日期" from dual;
      返回结果:2020-12-11 10:30:17
      
    • 9:显示数字,并忽略前面0
    • 0:显示数字,如果位数不足,则用0补齐
    • .:在指定位置显示小数点
    • ,:在指定位置显示逗号
    • $:在数字前加美元符
    • L:在数字前加本地货币符号(根据oracle安装语言)
    • C:在数字前加国际货币符号
    • G:在指定位置显示组分隔符
    • D:在指定位置显示小数点符号
      select to_char('800','L99999.99'),to_char('800','$99999.99'),to_char('800','C99999.99') from dual;
      返回结果:¥800.00 | $800.00 | CNY800.00
      
      select to_char('800','L00000.00')  from dual;
      返回结果:¥00800.00
      
      select to_char('80000','L99,999.99')  from dual;
      返回结果:¥80,000.00
      
    • 例:查询1980年入职的员工信息
      select * from emp where to_char(HIREDATE,'yyyy')=1980
      
    • 例:查询所有12月份入职的员工信息
      select * from emp where to_char(hiredate,'mm')=12
      
  • TO_DATE函数
    • 用于将字符串转换成date类型的数据,按特定格式插入日期值
      insert into emp values('9999','小红','MANAGER',7782,'11-11月-2020',1000,100,10);
      
      insert into emp values('9998','小明','MANAGER',7782,to_date('2020-12-12','YYYY-MM-DD'),2000,200,20);
      
系统函数
  • sys_context
  • 系统函数,通过该函数可以查询一些重要信息
    • terminal:当前会话客户所对应的终端的标识符
    • lanuage:语言
    • db_name:当前数据库名称
    • nls_date_format:当前会话客户所对应的日期格式
    • session_user:当前会话客户锁对应的数据库用户名
    • current_schema:当前会话客户所对应的默认方案名
    • host:返回数据库所在的主机的名称
  • 例:查询当前在使用的数据库名称
    select sys_context('userenv','db_name') from dual;
    
  • 例:查询当前用户名
    select sys_context('userenv','session_user') from dual;
    
  • 例:查询当前数据库所在主机名称
    select sys_context('userenv','host') from dual;
    
日期函数
  • sysdate函数
    • 获取系统日期函数
      select sysdate from dual;
      
      返回结果:2020/12/21
      
  • add_months
    • 返回指定日期增加指定个月份之后的日期
      select sysdate,add_months(sysdate,3) from dual;
      
      返回结果:
      SYSDATE     ADD_MONTHS(SYSDATE,3)
      ----------- ---------------------
      2020/12/21  2021/3/21 22:17:48
      
    • 例:查询入职日期小于8个月的员工信息
      select * from emp where sysdate < add_months(HIREDATE,8)
      
    • 例:查询入职满10年的员工信息
      select * from emp where sysdate >= add_months(hiredate,120)
      
    • 例:统计所有员工的入职天数
      select ename "姓名", trunc(sysdate-hiredate) as "入职天数" from emp
      
  • last_day
    • 获取指定日期所在当月最后一天日期
    • 例:找出各月份倒数第三天入职的所有员工
      select * from emp where hiredate=(last_day(hiredate)-2)
      
  • decode
    • 判断是否为真,返回指定值
      decode(expression,value,result1,result2)
      // 如果expression=value,则输出result1,否则输出result2
      decode(expression,value1,result1,value2,result2,value3,result3......,default)
      // 如果expression=value1,则输出result1,expression=value2,输出reslut2,expression=value3,输出result3,若expression不等于所列出的所有value,则输出为default
      
  • sign()
    • 判断参数的值大于0则返回1,等于0则返回0,小于0则返回-1
    • 将成绩表中分数大于90分的分为优秀,80-90分为良好,70-80分为中等,60-70分为及格,60分以下为不及格
      decode(sign(成绩-90),1,"优秀",0,"良好",-1,"及格")
      

小课堂
  • oracle在创建用户的同时会自动创建一个方案,方案名与用户名相同。方案里有很多数据对象(表、视图、触发器、存储过程等)
  • oracle是方案的方式来组织数据对象

你可能感兴趣的:(Oracle,PL/SQL,oracle,数据库,oracle教程,数据库教程,plsql,sql)