zoukankan      html  css  js  c++  java
  • 从零开始学Oracle—内建函数(四)

                                                                     SQL函数
    单行函数: 返回值只有1个,可以出现在Select字句或Where字句中
    分组函数: 返回值是多条记录

    一。单行函数:
       1.ASCII
    返回与指定的字符对应的十进制数;
    SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;

            A         A      ZERO     SPACE
    --------- --------- --------- ---------
           65        97        48        32

      2.CHR
        给出整数,返回对应的字符;
    SQL> select chr(54740) zhao,chr(65) chr65 from dual;

    ZH C
    -- -
    赵 A

    3.CONCAT
    连接两个字符串;
    SQL> select concat('010-','88888888')||'转23'  高乾竞电话 from dual;

    高乾竞电话
    ----------------
    010-88888888转23

     

    4.INITCAP
    返回字符串并将字符串的第一个字母变为大写;
    SQL> select initcap('smith') upp from dual;

    UPP
    -----
    Smith

    5.INSTR(C1,C2,I,J)
    在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
    C1    被搜索的字符串
    C2    希望搜索的字符串
    I     搜索的开始位置,默认为1
    J     出现的位置,默认为1
    SQL> select instr('oracle traning','ra',1,2) instring from dual;

     INSTRING
    ---------
            9

    6.length     返回字符串的长度;
    7.LOWER    返回字符串,并将所有的字符小写
    8.UPPER      返回字符串,并将所有的字符大写

    9.RPAD和LPAD(粘贴字符)
    RPAD  在列的右边粘贴字符
    LPAD  在列的左边粘贴字符
    SQL> select lpad(rpad('gao',10,'*'),17,'*')from dual;

    LPAD(RPAD('GAO',1
    -----------------
    *******gao*******
    不够字符则用*来填满


    10.LTRIM和RTRIM
    LTRIM(字符串,值)  删除字符串左边指定的值
    RTRIM(字符串,值)  删除字符串右边指定的值
    11.SUBSTR(string,start,count)
    取子字符串,从start开始,取count个
    12.REPLACE('string','s1','s2')
    string   希望被替换的字符或变量 
    s1       被替换的字符串
    s2       要替换的字符串
    13.SOUNDEX
    返回一个与给定的字符串读音相同的字符串
    SQL> create table table1(xm varchar(8));
    SQL> insert into table1 values('weather');
    SQL> insert into table1 values('wether');
    SQL> insert into table1 values('gao');

    SQL> select xm from table1 where soundex(xm)=soundex('weather');

    XM
    --------
    weather
    wether

    14.ROUND和TRUNC
    按照指定的精度进行舍入
    SQL> select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;

    ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)
    ----------- ------------ ----------- ------------
             56          -55          55          -55

    15.Least('表达式1','表达式2','表达式3')  返回一组表达式中的最小值
    16.TO_NUMBER  将给出的字符转换为数字
    17.TO_DATE(string,'format') 将字符串转化为ORACLE中的一个日期
    18.NEXT_DAY(date,'day')   给出日期date和星期x之后计算下一个星期的日期
    19..MONTHS_BETWEEN(date2,date1) 两个日期相差的天数
    20.Decode(字段1,值1,结果1,值2,结果2...,默认值)
    21.nvl(表达式1,表达式2) 表达式1为NULL,返回表达式2;不为NULL,返回表达式1。注意两者的类型要一致 
    22.nvl2(a,b,c)  
    表达式1不为NULL,返回表达式2;
                 为NULL .返回表达式3。表达式2和表达式3类型不同的话,表达式3会转换为表达式2的类型 
    23.nullif (expr1, expr2) ->相等返回NULL,不等返回expr1

    分组函数
      AVG([{DISYINCT|ALL}]) distinct去掉重复的数据 all所有数据
      Max
     SUM
     Count  计数函数
       count(*)  统计所有的行,包括重复的值和空值
       count(col_name) 统计列中非空值的个数
       count(distinct col_name) 统计列中除去空值和重复值的行数

    分析函数:
       作用:用于完成对聚集的累计排名,移动平均数和报表计算。
               分析函数是查询中执行的最后一组操作,只能出现在select列表或order by 字句
     row_number() over([Partition by column] order by column)  返回唯一排序值select

    按工资排名:
     ename,job,deptno,sal,row_number() over(order by sal desc) as A from empa;

    按部门分组再按工资排名  
    select ename,job,deptno,sal,row_number() over(Partition by deptno order by sal desc) as A from empa

    rank() 计算一个值在一组值中的排位,排位从1开始,相等值的行排位相同,序数跳跃相应值.

       select ename,sal,comm,deptno,rank() over(partition by deptno order by sal desc) from empa;
    dense_rank() 计算一个行在一组有序行中的排位,排位从1开头的连续整数,具有相等值,排位相同。排位是连续的。
    select d.dname,e.ename,e.sal,dense_rank() over(partition by e.deptno order by e.sal desc) denserank
    from empa a,dept d where e.deptno=d.deptno

  • 相关阅读:
    MTK相关汇总
    Android TV 学习笔记
    进程限制_limit
    Linux TV 学习笔记
    Linux firmware子系统的实现机制学习笔记
    C++ STL deque
    C++ STL Vector
    C++ STL几种数据结构对比
    vector系列--creating vector of local structure、vector of structs initialization
    vector系列--vector<unique_ptr<>>赋值给vector<unique_ptr<>>
  • 原文地址:https://www.cnblogs.com/sunjie9606/p/2167407.html
Copyright © 2011-2022 走看看