zoukankan      html  css  js  c++  java
  • Oracle排序,伪列,字符函数,数字函数,日期行数

    一  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(日期,第几天) 获取当前日期下一个星期的第几天 
     


                 
     


     


       




     
  • 相关阅读:
    jni 调用
    [2016-04-19 15:46:03
    java正则表达式
    proguaid 混淆代码
    nable to execute dex: Multiple dex files define Lcom/chinaCEB/cebActivity/R
    素质与修养
    纪律
    Android百度地图开发 百度地图得到当前位置
    定义一些常亮
    Android 有些机型hint不显示
  • 原文地址:https://www.cnblogs.com/t0404/p/10291073.html
Copyright © 2011-2022 走看看