Oracle中的常用函数

来源:互联网 发布:php长连接框架 编辑:程序博客网 时间:2024/06/09 20:36

     

1.ASCII 2

2.CHR 2

3.CONCAT 2

4.INITCAP 2

5.INSTR(C1,C2,I,J) 3

6.LENGTH * 3

7.LOWER 3

8.UPPER 3

9.RPADLPAD 3

10.LTRIMRTRIM * 4

11.SUBSTR(string,start,count) * 4

12.REPLACE('string','s1','s2') 4

13. TRIM('s' FROM 'string') 4

14. ABS 5

15. CEIL * 5

16. FLOOR * 5

17. MOD(n1,n2) * 5

18. ROUND * 5

19.SIGN * 6

20.TRUNC * 6

21.ADD_MONTHS * 6

22. LAST_DAY 6

23.NEXT_DAY(date,'day') 7

24.SYSDATE  ** 7

25. TO_CHAR(date,'format') ** 7

26. TO_DATE(string,'format') ** 7

27. TO_NUMBER * 7

28. GREATEST * 8

29. LEAST * 8

30.UID 8

31.USER 8

32.AVG(DISTINCT|ALL) * 8

33.MAX(DISTINCT|ALL) * 9

34.MIN(DISTINCT|ALL) * 9

35.GROUP BY * 9

36.HAVING * 9

37. ORDER BY * 10

38. Extract(date FROM datetime) 10

39. DECODE(expr,search1,result1[,search2,result2][,default]) 10

40.  NULLIF(expr1,expr2) 10

41.  NVL(expr1,expr2) 11

42. NVL2(expr1,expr2,expr3) 11

43.Translate(x,from_string,to_string) 11

                           

Oracle中的常用函数

 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')||'110'  电话 FROM dual;

             电话

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

            010-88888888110

4.INITCAP

  返回字符串并将字符串的第一个字母变为大写;

  SQL> SELECT initcap('smith') upp FROM dual;

            UPP

            -----

            Smith

5.INSTR(C1,C2,I,J)

  在一个字符串中搜索指定的字符,返回发现指定的字符的位置;

  C1    被搜索的字符串

  C2    希望搜索的字符串

  I     搜索的开始位置,默认为1

  J     (N)出现的位置,默认为1

  SQL> SELECT instr('oracle traning','ra',1,2) instring FROM dual;

             INSTRING

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

                    9

6.LENGTH *

   返回字符串的长度

SQL> SELECT      name,length(name)  FROM dual;

        Name       length(name)

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

       zhangsan        8

 

            

7.LOWER

  返回字符串,并将所有的字符小写

  SQL> SELECT lower('AaBbCcDd')   AaBbCcDd FROM dual;

SELECT deptno FROM emp WHERE lower(ename)='scott';

            AABBCCDD

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

            aabbccdd

8.UPPER

  返回字符串,并将所有的字符大写

  SQL> SELECT upper('AaBbCcDd') upper FROM dual;

              UPPER

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

            AABBCCDD

9.RPADLPAD

 RPAD  在列的右边粘贴字符

 LPAD  在列的左边粘贴字符

 SQL> SELECT lpad(rpad('gao',10,'*'),17,'*') FROM dual;

            LPAD(RPAD('GAO',1

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

            *******gao*******

不够字符则用*来填满

10.LTRIMRTRIM *

    LTRIM  删除左边出现的字符串

    RTRIM  删除右边出现的字符串

    SQL> SELECT ltrim(rtrim('   gao qian jing   ',' '),' ') FROM dual;

 

            LTRIM(RTRIM('

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

            gao qian jing

11.SUBSTR(string,start,count) *

    取子字符串,start开始,count

    SQL> SELECT substr('13088888888',3,8)  FROM  dual;

                     SUBSTR('

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

            08888888

12.REPLACE('string','s1','s2')

   string   希望被替换的字符或变量 

   s1       被替换的字符串

   s2       要替换的字符串

   SQL> SELECT replace('he love you','he','i') FROM dual;

            REPLACE('H

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

             i love you            

13. TRIM('s' FROM 'string') 

       LEADING   剪掉前面的字符

       TRAILING  剪掉后面的字符

     SQL> select trim('a' FROM 'a b 123') FROM dual;

TRIM('

------

 b 123

14. ABS

     返回指定值的绝对值

    SQL> SELECT abs(100),abs(-100) FROM dual;                

15. CEIL *

      返回大于或等于给出数字的最小整数

       SQL> SELECT ceil(3.1415927) FROM dual;

            CEIL(3.1415927)

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

                          4

16. FLOOR *

      对给定的数字取整数

      SQL> SELECT floor(2345.67) FROM dual;

              FLOOR(2345.67)

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

                      2345

17. MOD(n1,n2) *

  返回一个n1除以n2的余数

  SQL> SELECT mod(10,3),mod(3,3),mod(2,3) FROM dual;

            MOD(10,3)  MOD(3,3)   MOD(2,3)

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

                    1         0         2

18. ROUND *

    按照指定的精度进行舍入

  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

19.SIGN *

    取数字n的符号,大于0返回1,小于0返回-1,等于0返回0

    SQL> SELECT sign(123),sign(-100),sign(0) FROM dual;

 

            SIGN(123)  SIGN(-100)   SIGN(0)

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

                    1         -1         0          

20.TRUNC *

   按照指定的精度截取一个数

  SQL> SELECT trunc(124.1666,-2) trunc1,trunc(124.16666,2) FROM dual;

               TRUNC1     TRUNC(124.16666,2)

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

                  100             124.16

21.ADD_MONTHS *

    增加或减去月份

 SQL> SELECT 

         to_char(add_months(to_date('200712','yyyymm'),2),'yyyymm') FROM  dual; 

            TO_CHA

            ----------

            200802

 SQL> SELECT 

            to_char(add_months(to_date('200712','yyyymm'),-2),'yyyymm') FROM   dual;

            TO_CHA

            ----------

            200710

22. LAST_DAY

       返回日期的最后一天

  SQL> SELECT last_day(to_date('2007-05-12','yyyy-mm-dd')) FROM dual;

LAST_DAY(T

----------

31-5月 -07  

  SQL> SELECT last_day(sysdate) FROM dual;

             LAST_DAY(S

----------

31-8月 -07

23.NEXT_DAY(date,'day')

   给出日期date和星期x之后计算下一个星期的日期

 SQL> SELECT next_day('08-8-2007','星期五') next_day FROM dual;

 

 

NEXT_DAY

----------

10-8月 -07             

24.SYSDATE  **

     用来得到系统的当前日期

     SQL> SELECT to_char(sysdate,'dd-mm-yyyy day') FROM dual;

TO_CHAR(SYSDATE,'

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

08-08-2007 星期三

 

 

INSERT INTO mytableVALUES('100',sysdate);

 25. TO_CHAR(date,'format') **

      SQL> SELECT to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') FROM dual;

            TO_CHAR(SYSDATE,'YY

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

            2004/05/09 21:14:41

SELECT TO_CHAR(sysdate,'yyyy-mm-dd hh-mi-ss am') FROM dual;

26. TO_DATE(string,'format') **

       将字符串转化为ORACLE中的一个日期

SELECT to_date(‘2003-09-08’, ‘yyyy-mm-dd hh24:mi:ss’) from dual;

27. TO_NUMBER *

       将给出的字符转换为数字

       SQL> SELECT to_number('1999') year FROM dual;

                 YEAR

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

                 1999

28. GREATEST *

       返回一组表达式中的最大值,即比较字符的编码大小.

       SQL> SELECT greatest('AA','AB','AC') FROM dual;

 

            GR

            ----

            AC

       SQL> SELECT greatest('','','') FROM dual;

             GR

            ----

             天

29. LEAST *

       返回一组表达式中的最小值 

      SQL> SELECT least('','','') FROM dual;

            LE

          ------

            啊

30.UID

     返回标识当前用户的唯一整数

      SQL> show user

      SQL> SELECT username,user_id FROM dba_users where user_id=uid;

            USERNAME                         USER_ID

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

            SCOTT                                   25

31.USER

      返回当前用户的名字

      SQL> SELECT user FROM  dual;

             USER

           -----------

             SCOTT

  32.AVG(DISTINCT|ALL) *

       all表示对所有的值求平均值,distinct只对不同的值求平均值

       SQL> SELECT avg(distinct sal) FROM person;

            AVG(DISTINCTSAL)

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

                     3333.33

       SQL> SELECT avg(all sal) FROM gao.table3;

             AVG(ALLSAL)

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

                2592.59

33.MAX(DISTINCT|ALL) *

     求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次

      SQL> SELECT max(distinct sal) FROM scott.emp;

 

            MAX(DISTINCTSAL)

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

                        5000

34.MIN(DISTINCT|ALL) *

      求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次

     SQL> SELECT min(all sal) FROM person;

            MIN(ALLSAL)

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

                1111.11

35.GROUP BY *

     主要用来对一组数进行统计

    SQL> SELECT deptno,count(*),sum(sal) FROM scott.emp group by deptno;

               DEPTNO  COUNT(*)  SUM(SAL)

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

                   10         3      8750

                   20         5     10875

                   30         6      9400

36.HAVING *

       对分组统计再加限制条件

     SQL> SELECT deptno,count(*),sum(sal) FROM scott.emp group by deptno 

            having count(*)>=5;

               DEPTNO  COUNT(*)  SUM(SAL)

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

                   20         5     10875

                   30         6      9400

     SQL> SELECT deptno,count(*),sum(sal) FROM scott.emp having 

            count(*)>=5 group by deptno ;

 

               DEPTNO  COUNT(*)  SUM(SAL)

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

                   20         5     10875

                   30         6      9400

37. ORDER BY *

   用于对查询到的结果进行排序输出

   SQL> SELECT deptno,ename,sal FROM scott.emp order by deptno,sal desc;

38. Extract(date FROM datetime)

    从日期时间中取得特定数据(例如取出月、年等)

    SELECT extract(YEAR FROM sysdate)   FROM dual

SELECT extract(MONTH FROM sysdate) FROM dual

    SELECT extract(DAY FROM sysdate)    FROM dual

    SELECT extract(HOUR FROM localtimestamp) FROM dual

39. DECODE(expr,search1,result1[,search2,result2][,default])**

  SQL>SELECT deptno,DECODE(deptno,'10','ABC','20','DEF','30','AAA',’NO’)  a 

FROM dept;

    DEPTNO   A

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

        10     ABC

        20     DEF

        23

        24

        25

        30     AAA

40.  NULLIF(expr1,expr2)

       如果expr1expr2的值相等,则返回NULL,否则返回expr1

41.  NVL(expr1,expr2)**

如果expr1null,则返回expr2; 如果expr1不为null,则返回expr1

 

42. NVL2(expr1,expr2,expr3)

        如果expr1不是null,则返回expr2;如果expr1null,则返回expr3;参数expr1可以是任意数据类型,而expr2expr3可以是除Long之外的任何数据类型

 43.Translate(x,from_string,to_string) *

        SELECT translate('a1b0c2d3','3210','pqxy') from dual;

从'a1b0c2d3'中找在‘3210’中出现过的字符,找到后用‘pqxy’相应位置的字符替换

TRANSLAT

--------

axbycqdp

实际使用中最好使第二个参数 和 第三个参数的位数一样

 

用 代替

用 代替

2用  代替

用 代替

0 0
原创粉丝点击