设为首页 加入收藏

TOP

Oracle学习笔记4--单行函数(二)
2014-11-24 02:35:16 来源: 作者: 【 】 浏览:11
Tags:Oracle 学习 笔记 4-- 单行 函数
AY():下一个的今天是那一个日期。

LAST_DAY():求出给定日期的最后一天日期。

例:查询连个日期之间相差的月数,sysdate 表示的当前的时间。

SQL> select empno , ename , months_between(sysdate , hiredate) days from emp ;
 
EMPNO ENAME            DAYS
----- ---------- ----------
 7369 SMITH      399.772141
 7499 ALLEN      397.675367
 7521 WARD       397.610850
 7566 JONES      396.256012
 7654 MARTIN     390.417302
 7698 BLAKE      395.288270
 7782 CLARK             394
 7788 SCOTT      323.707625
 7839 KING       388.772141
 7844 TURNER     391.062463
 7876 ADAMS      322.578592
 7900 JAMES      388.223754
 7902 FORD       388.223754
 7934 MILLER     386.578592
 
14 rows selected
例:当前日期加上四个月之后的时间。
SQL> select add_months(sysdate , 4) from dual ;
 
ADD_MONTHS(SYSDATE,4)
---------------------
2014/8/9 22:29:57
例:下一个星期三的日期。
SQL> select next_day(sysdate , '星期三') from dual ;
 
NEXT_DAY(SYSDATE,'星期三')
--------------------------
2014/4/16 22:31:23

例:本月的最后一天的日期。
SQL> select last_day(sysdate) from  dual ;
 
LAST_DAY(SYSDATE)
-----------------
2014/4/30 22:32:0

转换函数:

to_char():转换为字符串

to_number():转换成数字

to_date():转换成日期

三者之间的相互转化关系:

<-- to_date --> to_number

date =================char ===================number

--> to_char <-- to_char

SQL> select empno , ename ,to_char( hiredate , 'yyyy-mm-dd') from emp ;
 
EMPNO ENAME      TO_CHAR(HIREDATE,'YYYY-MM-DD')
----- ---------- ------------------------------
 7369 SMITH      1980-12-17
 7499 ALLEN      1981-02-20
 7521 WARD       1981-02-22
 7566 JONES      1981-04-02
 7654 MARTIN     1981-09-28
 7698 BLAKE      1981-05-01
 7782 CLARK      1981-06-09
 7788 SCOTT      1987-04-19
 7839 KING       1981-11-17
 7844 TURNER     1981-09-08
 7876 ADAMS      1987-05-23
 7900 JAMES      1981-12-03
 7902 FORD       1981-12-03
 7934 MILLER     1982-01-23
 
14 rows selected

转换日期的格式。年:y ,年是四位数字表示 yyyy , 月:m 两位数字 表示 mm , 日: d 两位数字表示 dd 。

数字转换为字符。使用一些符号对数字进行分割,增加可读性。可以使用‘$’和‘L’表示出区域。‘$’表示美元 ,L : local表示以本地的语言进行金额的显示。

SQL> select sal , to_char(sal , '$99,999') from emp ;
 
      SAL TO_CHAR(SAL,'$99,999')
--------- ----------------------
   800.00     $800
  1600.00   $1,600
  1250.00   $1,250
  2975.00   $2,975
  1250.00   $1,250
  2850.00   $2,850
  2450.00   $2,450
  3000.00   $3,000
  5000.00   $5,000
  1500.00   $1,500
  1100.00   $1,100
   950.00     $950
  3000.00   $3,000
  1300.00   $1,300
 
14 rows selected

例:to_number() 字符串变为数字的函数

SQL> select to_number('34')+46 from dual; 
TO_NUMBER('34')+46
------------------
                80

将字符串变为数字,然后进行数字的运算。

例:to_date() 将一个字符串变为date型的数据。

SQL> select to_date('2014-4-9' ,'yyyy/mm/dd') dates from dual ;
 DATES
-----------
2014/4/9

通用函数:

NVL() :将一个指定的null值变为指定的内容。空值是无法参与运算的所以把空值替换为 0 。

SQL> select empno ,(nvl(comm , 0 )+sal)*12 annual from emp ;
 
EMPNO     ANNUAL
----- ----------
 7369       9600
 7499      22800
 7521      21000
 7566      35700
 7654      31800
 7698      34200
 7782      29400
 7788      36000
 7839      60000
 7844      18000
 7876      13200
 7900      11400
 7902      36000
 7934      15600
 
14 rows selected

decode() 函数,类似与java中的if… else if … else

例:
SQL> select decode(1 , 1 ,'数值1' , 2 ,'数值2' , 3  , '数值3') from dual ;
 
DECODE(1,1,'数值1',2,'数值2',3
------------------------------
数值1
 
SQL> select decode(2 , 1 ,'数值1' , 2 ,'数值2' , 3  , '数值3') from dual ;
 
DECODE(2,1,'数值1',2,'数值2',3
------------------------------
数值2
 
SQL> select decode(3 , 1 ,'数值1' , 2 ,'数值2' , 3  , '数值3') from dual ;
 
DECODE(3,1,'数值1',2,'数值2',3
------------------------------
数值3
通过上面三个查询的结果,我们不难发现,decode()函数的作用和用法。第一个参数为待匹配的值,之后参数两两一组,一组中第一个字符与带匹配字符比较,相同则输出第二个字符。
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇10GRAC节点2宕机通过修改listener.. 下一篇oracleCONNECTBYPRIOR叶子节点查..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: