博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle排序,伪列,字符函数,数字函数,日期行数
阅读量:4564 次
发布时间:2019-06-08

本文共 2187 字,大约阅读时间需要 7 分钟。

一  ORACle的排序 
      排序语句: 
       SELECT [DISTINCT] * | [列名 [别名],…] 
         FROM 表名 
        WHERE 条件 
        ORDER BY 排序的列 [ASC | DESC],…; 
       select * from emp order by hiredate desc   ( desc表示降序 从大到小 asc 表示升序) 
       select * from emp where where job='MANAGER' order by  hiredate desc; (按条件查询出结果后排序) 
       select * from mep order by hiredate desc,sal desc (按条件一升序后 相同的条件一在进行条件二排序) 
二 Oracle的伪列 
      ROWID 是表中每一条记录的唯一标识符,数据库内部使用它来存储行的物理地址。 
       该地址可以唯一地标识数据库中的一行,可以使用 ROWID 伪列快速地定位表中的某一行。 
       无法使用update语句修改 
     ROWNUM 是SQL查询返回的结果集中每一行的行号。 
       可以用它来限制查询返回的行数。 
       ROWNUM是先查到结果集之后再加上去的一个列 。 
         在oracle中使用rownum来进行分页 
         select t.* ,rownum as rn from emp where rownum>=10 and rownum<=20这是错误的 
         因为行的循环查找 从索引1 开始  第一条记录的索引为1  不满足 循环第二条时 记录索引从1 开始 。。。。所以的行的行号都是1 永远不满足 
           select * from (select t.*,rownum as rn from emp t) where rn>=10 and rn<=20 这是正确的  (一般使用) 
                  分页另一种写法 
           select * from (select t.*,rownum as rn from emp t where rownum<=20) where rn>=10 正确的 
         select * from emp where rownum<=10 这是正确 
        记录:rownum大于1的记录永远不可能成立  rownum<等于任何值都成立 
三  oracle的单行函数 
      字符串函数 
      lower(n) 将字符转换成小写         
         select lower('AAAA') from dual;  --aaaa 
         select lower(ename) from emp;    --列输出结果全部小写 
      upper(n) 将字符串转换成大写 
      replace(列名,被替换的字符串,替换的字符串) 
          select ename,replace(job,'MANAGER','经理')  from emp; --job列中 所有的MANAGER都被替换成了经理 
          select replace('AAAtestgggg','test','测试') from dual; --AAA测试gggg 
      instr(列名,被搜索的字符串) 
          select instr('AAAtestgggg','test') from dual; --4 索引从1开始 
      substr(列名,开始位置,总长度) 
          select instr('AAAtestgggg',4,3) from dual; --tes 
      concat(参数1,参数2) 
          select concat('a','b') from dual;  --- ab  等价于 'a'||'b'   
      length(列名) 获取字符的长度 
      trim(列名) 去空格  
          ltrim 去左侧的空格 
          rtrim 去右侧的空格 
 
         nvl(列名,值) 当列的值为空时 输入第二参数的值 如果不为空 输出当前列的值 
         nvl2(列名,值1,值2) 当列的值为空时 输出第二个参数的值 如果不为空输出第三个参数的值 
         decode(列名,条件1,值1,条件2,值2......,条件n,值n) 当列的值等于条件n时输出值n 
    数字函数            
      mod(5,2) 取余数 等价于java 5%2 
      round(n) 对整数位进行四舍五入 满5进1 
      round(n,p) 对小数位进行四舍五入 比如 round(5.6767,2) 输出为5.68 
      trunc(n) 截断小数位 只保留整数位 
     trunc(n,p) 截断小数位意外的位数 比如 trunc(5.666,2) 输出为5.66 就是保留p位小数 
    日期函数            
      sysdate 获取系统的当前时间  
      add_months(日期,月数) 将日期加上月数 并返回  比如 (sysdate=2016-3-3)+5个月 =2016-8-3 
      select sysdate+天数 from dual 将当前日期加上某个数字 表示+天数 
      months_between(日期1,日期2)  比较日期1和日期2的相差的月份数  结果=日期1-日期2 
      last_day(日期) 返回日期对应月份的最后一天 
      round(日期,格式) 
            YEAR 获取当年的第一天 
            MONTH 获取当月的第一天 
            DAY 获取 第一个周末的第一天 
      next_day(日期,第几天) 获取当前日期下一个星期的第几天 
 
             
 
 
   
 

转载于:https://www.cnblogs.com/t0404/p/10291073.html

你可能感兴趣的文章
【2019.3.2】NOI 模拟赛
查看>>
设计模式(3)----工厂方法模式
查看>>
Asp.net mvc + .net ef database first 或 model first 时如何添加验证特性
查看>>
Caused by: java.lang.ClassNotFoundException: HttpServletRequest
查看>>
C++primer plus第十章第5题
查看>>
SqlServer 之 查看表空间
查看>>
Python学习笔记(matplotlib篇)--使用matplotlib绘制直方图
查看>>
salesforce 零基础学习(二十一)workflow Q&A
查看>>
Leetcode 120: Triangle
查看>>
ACM模板——二分图
查看>>
【Java初探02】——Java语言基础
查看>>
leetcode 48. Rotate Image
查看>>
Windows 7下java SDK下载、安装及环境变量设置
查看>>
java 自定义序列化
查看>>
把Windows7启动栏上的库修改为我的电脑
查看>>
在 Win32 Application 和 Win32 Console Application 中使用 MFC
查看>>
angular 2+ 路由守卫
查看>>
存储过程
查看>>
关于解决乱码问题的一点探索之一(涉及utf-8和GBK)
查看>>
Decomposition
查看>>