007.Oracle函数

发布时间:2024年01月19日

无奋斗不青春

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

分隔线

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,否则输出result2decode(expression,value,result1,result2)
如果expression=value1,则输出result1,expression=value2,输出reslut2,expression=value3,输出result3decode(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是方案的方式来组织数据对象
文章来源:https://blog.csdn.net/weixin_50296259/article/details/135699716
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。