侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Oracle常用的单行函数应用技巧总结

数据库  /  管理员 发布于 3年前   175

单行函数;
   字符函数,数字函数,日期函数,转换函数(核心),通用函数(核心)

一:字符函数:

   .UPPER(字符串) 将字符串转为大写   .LOWER (字符串) 将字符串转为小写    .INITCAP(字符串) 将首字母大写   .LENGTH (字符串) 字符串的长度   .REPLACE(字符串,'A','_') 将字符串字符A转换成_   .SUBSTR (字符串,开始截取点,结束截取点)字符串的截取

 

 

oracle验证字符串,必须输入完整的sql语句,所以在oracle数据库中为了用户的查询方便,专门提供了一个虚拟的"dual"虚拟表

 

实例:转大写的函数(UPPER) select UPPER('hello') from dual;实例:将emp表的名字大写 select UPPER(ename) from emp;实例;将emp表姓名小写select LOWER(ename) from emp;实例:将姓名的首字母大写select initcap(ename) from emp;实例:查询字符长度为5的数据select * from emp where length(ename)=5;实例:将字母a用下划线替换select replace(ename,'a','_') from emp;

 

字符串的截取操作的两种语法:
      .语法一substr(字符串,开始点)表示从开始点一直截取到结尾
 实例; 从第三个字母开始截取
 select ename ,substr(ename,3) from emp;

     .语法二substr(字符串,开始点,结束点)表示从开始点截取一直截取点结束点

实例:截取前3个
select ename ,substr(ename,0,3) from emp;
select ename ,substr(ename,1,3) from emp;

Oracle里面的0和1都是代表第一个


实例:截取姓名的后三个字母
思路一:字符的长度-2
 

select ename, substr(ename,length(ename)-2) from emp;

 

思路二:设置负数,-3 从倒数截取第三个截取

select ename ,substr(ename,-3) from emp;substr从0或者是1开始截取正确吗? .substr从0和1开始截取的效果是一样的 .substr还可以设置负数从后面开始截

 

-----------------------------------------------------------------------------------------

二: 数字函数:

   ROUND(数字):四舍五入的操作   trunc(数字):舍弃指定的小树   mod(数字) :取摸,取余数实例:round函数select round(900.23),round(-120,90),round(900.23,2),round(-999.89,-3) from dual;实例:trunc函数select trunc(900.23),trunc(-120,90),trunc(900.23,2),trunc(-999.89,-2) from dual;实例:mod函数select mod(10,3) from dual;

 

----------------------------------------------------

三: 日期函数:

获得当前日期"sysdate"select sysdate from dual; .日期+数字=日期 若干天后的天数 select sysdate+3 from dual;.日期-数字=日期 若干天前的天数  select sysdate from dual;.日期-日期=天数实例:求出每个雇员到今天的天数select ename ,hiredate,sysdate-hiredate from emp;日期的操作函数.last_day(日期) 指定日期的最后一天实例:求出本月的最后一天select last_day(sysdate) from dual;.next_day(日期,'星期数')求出下一个星期数的日期select next_day(sysdate,'星期一') from dual;.add_months(日期,数字);求出若干月后的日期select add_months(sysdate,4) from dual;.months_between(日期1,日期2);日期1 到日期2之间的天数select ename,hiredate, trunc(months_between(sysdate,hiredate)) from emp;

 

------------------------------------------------------------------

四: 转换函数(核心):

 数字,字符串,日期  三种转换函数 .to_char(字符串,字符串格式) 将日期转化为字符串 .to_date(字符串,格式字符) 将数字转换为date数据显示 .to_number(字符串) 将字符串转化为数字1,to_char函数 实例: 查询系统时间select sysdate from dual;使用指定的格式显示 年yyyy  月mm 日 dd 时 hh 分 mi 秒ss 实例:将时间转化为年-月-日select to_char(sysdate,'yyyy-mm-dd') from dual; 数据可能会出现前导0,消除前导加一个"fm"实例:将时间转化为年-月-日 时-分-秒select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;此时显示的是字符串而不是数字2,to_date函数 实例;将1890-8-18转为数字类型的显示select to_date('1890-8-18','yyyy-mm-dd') from emp;3,to_number函数:Oracle很少用到

 

 

---------------------------------------------------------------

五:  通用函数(核心)

.nvl函数  将null转为指定的字符  实例;将emp表中的comm为null的转为0  select nvl(comm,0) from emp;.nvl2函数nvl2(comm,0,2)如果comm为null就转化为0,否则就转化为2 select nvl2(comm,0,2) from emp;

 decode函数

decode函数,多数值判断 decode语法:     decode(job,'数值','转化的名称','数值','转化的名'..);实例;将emp表中的职位用中文显示 select  ename,sal,job,decode(job,'CLERK','清洁工') from emp; 结果:ENAME            SAL JOB       DECODE(JOB,'CLERK','清洁工')---------- --------- --------- ----------------------------SMITH        1000.00 CLERK     清洁工ALLEN        1600.00 SALESMAN  WARD         1250.00 SALESMAN  JONES        2975.00 MANAGER   MARTIN       1250.00 SALESMAN  BLAKE        2850.00 MANAGER   CLARK        2450.00 MANAGER   SCOTT        3000.00 ANALYST   KING         5000.00 PRESIDENT TURNER       1500.00 SALESMAN  ADAMS        1100.00 CLERK     清洁工JAMES         950.00 CLERK     清洁工FORD         3000.00 ANALYST   MILLER       1300.00 CLERK     清洁工

 

 


  • 上一条:
    简单表单提交验证效果js实现
    下一条:
    Oracle显示根据高考分数模拟录取
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 数据库分表问题之时间分表场景浅析解答记录(0个评论)
    • 在mysql中快速生成100w条测试数据流程步骤(0个评论)
    • Postgresql的json类型详解(0个评论)
    • Mysql Binlog解析工具:binlog2sql的使用流程步骤(0个评论)
    • 在mysql中常规SQL语句性能优化策略52条(0个评论)
    • 近期文章
    • 适用于 Laravel 的表单请求测试程序包(0个评论)
    • Laravel 10.25版本发布(0个评论)
    • 在go语言中实现生成文件的校验和功能代码示例(0个评论)
    • Laravel 11版本抢先看,看将有什么新功能发布(0个评论)
    • goose数据库迁移工具介绍及使用流程步骤(0个评论)
    • 中国程序员“翻墙”为海外软件公司打工,105.8万工资被罚没!转知乎(0个评论)
    • 在go语言gin框架中使用Sharding(Gorm分表中间件)实现分表流程步骤(0个评论)
    • 在PHP提高性能方式之开启OPCache扩展及OPCache配置参数详解(0个评论)
    • 在js的websocket客户端开发中遇到代码割裂情况解决方案(0个评论)
    • Laravel框架中适用于Eloquent的日期过滤软件包:lara-date-filter(0个评论)
    • 近期评论
    • 路人 在

      php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..
    • 博主 在

      科学上网翻墙之v2rayN-Core客户端免费公益节点使用教程中评论 @ mashrdn 多切换几个节点测试,免费ssr是没那么稳..
    • mashrdn 在

      科学上网翻墙之v2rayN-Core客户端免费公益节点使用教程中评论 V2rayn免费节点添加上去了,youtobe无法打开网页,是怎么回事..
    • 张伟 在

      科学上网翻墙之v2rayN-Core客户端免费公益节点使用教程中评论 3q!有用,不过免费节点隔天就要去git上复制新的导进去..
    • 博主 在

      科学上网翻墙访问Google , 上外网神器佛跳墙VPN(永久免费)使用流程步骤中评论 该篇教程已不能用了,告知大家,免的老有老铁问我!..
    • 2017-06
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-05
    • 2018-10
    • 2018-11
    • 2020-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2021-02
    • 2021-04
    • 2021-07
    • 2021-08
    • 2021-11
    • 2021-12
    • 2022-02
    • 2022-03
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-07
    • 2023-08
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客