oracle 基本函数

来源:互联网 发布:粉笔上的数据如何重置 编辑:程序博客网 时间:2024/05/29 18:42

  


 一, 基本函数

      1. show user;  显示当前链接的用户

     2. select  *  from tab  获取当前用户下得所有表

     3. desc  message  显示message表的结构

     4. clear scr 清屏

  

  二,  字符串函数

     1.   select upper('hello') from dual               将hello转换为大写  dual是虚表。

     2.    select lower("HELLO") from dual         将HELLO转换为小写

     3.    select initcap('hello') from dual             将第一个字母转换为大写

     4.    select concat('hello','word')from dual;    字符串的链接

     5.    select substr('helooo',1,3)from dual;     字符串的截取,结果为hel,   select substr('helooo',1,4)from dual; 结果                为helo 字符串的截取跟java中有所不同。

     6.   select length('hello')  from dual               字符串的长度

     7.   select replace('hello','o','x')                       字符串的替换

     8.   select substr('hellotster',-4)                        表示截取后四位, 结果为ster.

     9.    SQL> select substr('helo tt',3)from dual;    表示从第三位开始截取,一直截取到字符串末尾
 
       SUBSTR('HELOTT',3)
      ------------------
      lo tt


 三, 数值函数

   1. select round(789.536) from dual    四舍五入, 结果为790

        SQL> select round(789.536) from dual;
         ROUND(789.536)
         --------------
           790

    

    2. select round(123456.3434,2)from dual;   保留2位小数    结果为123456.34

          ROUND(123456.3434,2)
           --------------------
           123456.34

  3.  select trunc(4545.98) from dual               去掉小数,不进位         结果为4545

       TRUNC(4545.98)
        --------------
          4545


 4.  select trunc(45454.4545,3) from dual      保留3为小数   结果为45454.454

      TRUNC(45454.4545,3)
-------------------
          45454.454

 

5.  当第三个参数为负数时


SQL> select trunc(45454.4545,-3)from dual;
 
TRUNC(45454.4545,-3)
--------------------
               45000
 


SQL> select trunc(45454.4545,-2)from dual;
 
TRUNC(45454.4545,-2)
--------------------
               45400

6. 取模  select mod(10,3) from dual     等于 10%3

 MOD(10,3)
----------
         1


 四,日期函数


    1. select sysdate from dual          取得当前时间

    2. select last_day(sysdate) from dual 求本月的最后一天


五,转换函数

      1. select to_char(sysdate,'yyyy') from dual     结果为2012

         TO_CHAR(SYSDATE,'YYYY')
         -----------------------
         2012


      2. 月份

     SQL> select to_char(sysdate,'mm')from dual;
      TO_CHAR(SYSDATE,'MM')
       ---------------------
       04

       

     3. 日期

  SQL> select to_char(sysdate,'dd')from dual;
 
   
 TO_CHAR(SYSDATE,'DD')
    ---------------------
     28


   4. 当前时间的格式

SQL> select to_char(sysdate,'yyyy/mm/dd')from dual;
TO_CHAR(SYSDATE,'YYYY/MM/DD')
-----------------------------
2012/04/28

   

5. 取消月日前面的0  

SQL> select to_char(sysdate,'fmyyyy-mm-dd')from dual;
TO_CHAR(SYSDATE,'FMYYYY-MM-DD'
------------------------------
2012-4-28


6. 将字符串转换为日期

SQL> select to_date('2011-09-09','yyyy-mm-dd')from dual;
TO_DATE('2011-09-09','YYYY-MM-
------------------------------
2011-9-9


7. 格式

SQL> select to_char('20394','99,999')from dual;
TO_CHAR('20394','99,999')
-------------------------
 20,394


8.加上钱币符号

SQL> select to_char('20394','L99,999')from dual;
TO_CHAR('20394','L99,999')
--------------------------
        ¥20,394


9,SQL> select sign(10-20)from dual;  sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
 

SIGN(10-20)
-----------
         -1


 10 。DECODE函数

          先构造一个例子,假设我们想给智星职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,通常的做法是,先选出记录中的工资字段值? select salary into var-salary from employee,然后对变量var-salary用if-then-else或choose case之类的流控制语句进行判断。 如果用DECODE函数,那么我们就可以把这些流控制语句省略,通过SQL语句就可以直接完成。如下:select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee 是不是很简洁? DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。



SQL> select decode(sign(10-20),-1,10,20)from dual;
 
DECODE(SIGN(10-20),-1,10,20)
----------------------------
                          10


SQL> select decode(sign(30-20),-1,10,1,20)from dual;
 
DECODE(SIGN(30-20),-1,10,1,20)
------------------------------
                            20


SQL> select decode(sign(20-20),-1,10,1,20,0,0)from dual;
 
DECODE(SIGN(20-20),-1,10,1,20,
------------------------------
                             0



SELECT TRUNC(SYSDATE + 1) FROM DUAL,这个就是明天,TRUNC是去掉小时分秒的函数。连个日期相减,得到相差的天数以及小时分秒换算成了数字。一个时间点到当前时间是否间隔3天,直接用这个时间点,减去SYSDATE,如果是大于3,那么相隔就超过了3天,而小于3,不到3天,等于3,正好3天。


Oracle的通配符


%  用来表示任意数量的字符,或者可能更本没有字符

_   用来确切的单个字符


?  未知字符


#  表示阿拉伯数字,0到9


[a-d]   表示a-d




原创粉丝点击