Oracle学习(三):单行函数(二)

2014-11-24 15:10:24 · 作者: · 浏览: 3
DENT' then sal+1000 2 when 'MANAGER' then sal+800 3 else sal+400 4 end 涨后薪水 5 from emp; SQL> --decode:功能和case一样,第一个参数为表达式,之后每两个为一对:条件,值;最后一个为缺省值,相当于else的值 SQL> select ename,job,sal 涨前薪水,decode(job,'PRESIDENT',sal+1000, 2 'MANAGER', sal+800, 3 sal+400)涨后薪水 4 from emp; 2.在Sqlplus下实际执行的结果录屏:
SQL> --字符函数
SQL> select lower('hellO WORld') 转小写,upper('hellO WORld') 转大写,initcap('hello world') 首字母大写
  2  from dual;

转小写      转大写      首字母大写                                              
----------- ----------- -----------                                             
hello world HELLO WORLD Hello World                                             

SQL> host cls

SQL> --substr(a,b) 从a中,第b位开始取,取右边所有的字符
SQL> select substr('Hello World',4)  from dual;

SUBSTR('                                                                        
--------                                                                        
lo World                                                                        

SQL> --substr(a,b,c) 从a中,第b位开始取,取c位
SQL> select substr('Hello World',4,4)  from dual;

SUBS                                                                            
----                                                                            
lo W                                                                            

SQL> host cls

SQL> --length 字符数 lengthb 字节数
SQL> select length('Hello World') 字符数, lengthb('Hello World') 字节数
  2  from dual;

    字符数     字节数                                                           
---------- ----------                                                           
        11         11                                                           

SQL> ed
已写入 file afiedt.buf

  1  select length('北京') 字符数, lengthb('北京') 字节数
  2* from dual
SQL> /

    字符数     字节数                                                           
---------- ----------                                                           
         2          4                                                           

SQL> host cls

SQL> --instr 在母串中查找子串,找到返回下标(从1开始),否则返回0
SQL> select instr('Hello World','ll')  from dual;

INSTR('HELLOWORLD','LL')                                                        
------------------------                                                        
                       3                                                        

SQL> host cls

SQL> --lpad 左填充  rpad 右填充
SQL> select lpad('abcd',10,'*') 左,rpad('abcd',10,'*') 右
  2  from dual;

左         右                                                                   
---------- ----------                                                           
******abcd abcd******                                                           

SQL> host cls

SQL> --trim 去掉前后指定的字符
SQL> select trim('H' from 'Hello WorldH') from dual;

TRIM('H'FR                                                                      
----------                                                                      
ello World                                                                      

SQL>
select replace('Hello World','l','*') from dual; REPLACE('HE ----------- He**o Wor*d SQL> host cls SQL> --数字函数 SQL> select ROUND(45.926, 2) 一,ROUND(45.926, 1) 二, ROUND(45.926, 0) 三 2 ROUND(45.926, -1) 四, ROUND(45.926, -2) 五 3 from dual; ROUND(45.926, -1) 四, ROUND(45.926, -2) 五 * 第 2 行出现错误: ORA-00923: 未找到要求的 FROM 关键字 SQL> ed 已写入 file afiedt.buf 1 select ROUND(45.926, 2) 一,ROUND(45.926, 1) 二, ROUND(45.926, 0) 三, 2 ROUND(45.926, -1) 四, ROUND(45.926, -2) 五 3* from dual SQL> / 一 二 三 四 五 ---------- ---------- ---------- ---------- ---------- 45.93 45.9 46 50 0 SQL> ed 已写入 file afiedt.buf 1 select TRUNC(45.926, 2) 一,TRUNC(45.926, 1) 二, TRUNC(45.926, 0) 三, 2 TRUNC(45.926, -1) 四, TRUNC(45.926, -2) 五 3* from dual SQL> / 一 二 三 四 五 ---------- ---------- ---------- ---------- ---------- 45.92 45.9 45 40 0 SQL> host cls SQL> --日期函数 SQL> select sysdate from dual; SYSDATE -------------- 22-10月-12 SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual 2 ; TO_CHAR(SYSDATE,'YY ------------------- 2012-10-22 15:39:21 SQL> select systimestamp from dual; SYSTIMESTAMP --------------------------------------------------------------------------- 22-10月-12 03.40.05.406000 下午 +08:00 SQL> host cls SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; TO_CHAR(SYSDATE,'YY ------------------- 2012-10-22 15:40:33 SQL> select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss*ff') from dual; TO_CHAR(SYSTIMESTAMP,'YYYY-MM ----------------------------- 2012-10-22 15:40:47*218000 SQL> --systimestamp时间戳 SQL> --昨天 今天 明天 SQL> select (sysdate-1) 昨天, sysdate 今天, (sysdate+1) 明天 from dual; 昨天 今天 明天 -------------- -------------