Oracle(三)-------------------单行函数

总是觉得自己写的oracle笔记特别垃圾,可是有说不清该怎么去写,有建议的告诉一声啊,本人在此谢过啦!
Sql函数分为两种:
单行函数、多行函数
单行函数:
操作数据对象
接受参数返回一个结果
只对一行进行变换
每行返回一个结果
可以转换数据类型
可以嵌套
参数可以是一列或一个值
单行函数可以分为:
字符函数:
                   大小写控制函数【LOWER、UPPER、 INITCAP】
                            SQL>select lower('REDY') from dual;
LOWER('                                                                        
-------                                                                        
red                                                                        
 
SQL> select upper('red') from dual;
UPPER('                                                                        
-------                                                                        
REDY                                                                        
 
SQL> select initcap('red') from dual;
INITCAP                                                                        
-------                                                                        
Red
         字符控制函数【CONCAT、SUBSTR、LENGTH、INSTR、LPAD|RPAD、TRIM、REPLACE】
                            函数                                结果
                            CONCAT('Hello', 'World')          HelloWorld
SUBSTR('HelloWorld',1,5)          Hello
LENGTH('HelloWorld')                                  10
INSTR('HelloWorld', 'W')           6(W出现的位置)
LPAD(salary,10,'*')                              *****24000
RPAD(salary, 10, '*')                            24000*****
TRIM('H' FROM'HelloWorld')           elloWorld(去除的是首字母的H)
         数字函数
                   ROUND  四舍五入
SQL> select round(45.3213,2) from dual;
ROUND(45.3213,2)                                                               
----------------                                                               
          45.32 
                   TRUNC     截断
SQL> select trunc(45.926,2) from dual;
TRUNC(45.926,2)                                                                 
---------------                                                                
                45.92 
                    MOD     求余
SQL> select mod(1600,300) from dual;
MOD(1600,300)                                                                   
-------------                                                                  
               100
注:DUAL 是一个‘伪表’,可以用来测试函数和表达式
日期:
Oracle 中的日期型数据实际含有两个值: 日期和时间。
默认的日期格式是 DD-MON-RR.
  函数SYSDATE 返回:
日期
时间
日期的数学运算:
l  在日期上加上或减去一个数字结果仍为日期。
l  两个日期相减返回日期之间相差的天数。
l  可以用数字除24来向日期中加上或减去小时。
Months_between  两个日期相差的月数
SQL> selectmonths_between('1-10月-90','2-4月-90') from dual;
MONTHS_BETWEEN('1-10月-90','2-4月-90')                                         
--------------------------------------                                         
                            5.96774194
Add_months      向指定日期中加上若干月数
SQL> selectadd_months(sysdate,2) from dual;
ADD_MONTHS(SYS                                                                 
--------------                                                                 
13-5月 -12
Next_day         指定日期的下一个日期
SQL> selectnext_day(sysdate,'星期二') from dual;
NEXT_DAY(SYSDA                                                                 
--------------                                                                 
20-3月 -12
Last_day         本月的最后一个日期
SQL> selectlast_day(sysdate) from dual;
LAST_DAY(SYSDA                                                                 
--------------                                                                 
31-3月 -12
Round           日期四舍五入
SQL> selectround(sysdate) from dual;
ROUND(SYSDATE)                                                                 
--------------                                                                  
13-3月 -12
Trunk            日期截断
SQL> selecttrunc(sysdate,'MONTH') from dual;
TRUNC(SYSDATE,                                                                 
--------------                                                                 
01-3月 -12
 
转换函数:
隐形:Oracle自动完成的转换
显示:
TO_CHAR 函数对日期的转换
格式:
l  必须包含在单引号中而且大小写敏感。
l  可以包含任意的有效的日期格式。
l  日期之间用逗号隔开。
SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;
TO_CHAR(SY                                                                     
----------                                                                     
2012-03-13
 
TO_CHAR 函数对数字的转换
下面是在TO_CHAR 函数中经常使用的几种格式:
9----------数字
0-----------零
$-----------美元符
L---------本地货币符号
.--------小数点
,--------千位符
SQL> select to_char('2430', '$99,999.00') from dual;
TO_CHAR('24                                                                    
-----------                                                                    
            $2,430.00 
【
            SQL> selectto_char('1200032432430', '$99,999.00') from dual;
TO_CHAR('12                                                                    
-----------                                                                     
########### 
如果出现上述这种情况,那说明第一个参数太长了
】
l  使用 TO_NUMBER 函数将字符转换成数字:
SQL> select to_number('123','99,999') from dual;
TO_NUMBER('123','99,999')                                                      
-------------------------                                                      
                      123 
l  使用 TO_DATE 函数将字符转换成日期:
SQL> select to_date('1992-3-4','yyyy/mm/dd') from dual;
TO_DATE('1992-                                                                 
--------------                                                                 
04-3月 -92
通用函数:
这些函数适用于任何数据类型,同时也适用于空值:
l  NVL (expr1, expr2)
l  将空值转换成一个已知的值:
l  可以使用的数据类型有日期、字符、数字。
l  函数的一般形式:
l  NVL(commission_pct,0)
l  NVL(hire_date,'01-JAN-97')
l  NVL(job_id,'No Job Yet')
l  NVL2 (expr1, expr2, expr3)
l  NULLIF (expr1, expr2)
l  COALESCE (expr1, expr2, ..., exprn)
 
SQL> select nvl2(comm,comm,0) from emp;
NVL2(COMM,COMM,0)                                                               
-----------------                                                              
                0                                                              
              300                                                              
              500                                                              
                0                                                              
            1400                                                              
 
SQL> selectlength(first_name),length(last_name),nullif(length(first_name),length(last_name))from employees;
LENGTH(FIRST_NAME)LENGTH(LAST_NAME)                                            
-----------------------------------                                           
NULLIF(LENGTH(FIRST_NAME),LENGTH(LAST_NAME))                                   
--------------------------------------------                                   
                7                 9                                           
                                          7                                   
                                                                               
                 4                 4                                           
                                                                               
                                                                               
                 5                 5       
使用 COALESCE 函数
l  COALESCE 与 NVL 相比的优点在于 COALESCE 可以同时处理交替的多个值。
l  如果第一个表达式为空,则返回下一个表达式,对其他的参数进行COALESCE 。
                 SQL> select coalesce(comm,10) from emp;
COALESCE(COMM,10)                                                              
-----------------                                                              
               10                                                              
              300                                                              
              500                                                              
               10                                                              
            1400 
条件表达式
在SQL语句中使用if—then—else逻辑
使用两种方法:
Case表达式
SQL> selectlast_name,job_id,salary,
2  case job_id when 'IT_PRDG'then 1.10*salary
         3  when'ST_CLERK' then 1.15*salary
         4  when'SA_REP' then 1.20*salary
        5  else salary end "REVISED_SALARY"
         6  from employees;
Decode函数
           1 select last_name,job_id,salary,
          2  decode(job_id,'IT_PRDG', 1.10*SALARY,
      3 'ST_CLERK',1.15*salary,
  4  'SA_REP',1.20*salary,salary)
  5* revised_salary fromemployees
嵌套函数
单行函数可以嵌套。
嵌套函数的执行顺序是由内到外。
SQL> selectlast_name,nvl(to_char(manager_id),'No Manager') from employees where manager_idis null;


你可能感兴趣的:(Oracle(三)-------------------单行函数)