oracle 複習之 單行函數

單行函數分爲:字符函數、數字函數、日期函數、轉換函數、通用函數。

在oracle中,對字符串進行操作的時候,必須的寫完整的sql語句。例如:要將hello裝換成大寫:

select upper('hello') from emp;

這樣顯示的結果你就會發現出現了14行,記錄查詢就會很不方便。所以在oracle中就有一個虛擬的表 dual;

select upper('hello') from dual;

1、字符函數:主要進行字符串的操作。

     UPPER(字符串|列):將輸入字符串轉換成大寫返回。

     LOWER(字符串|列):將輸入的字符串轉換成小寫返回。

  INITCAOP(字符串|列):開頭首字母大寫。

 LENGTH(字符串|列):返回字符串的長度。

 REPLACE(字符串|列,'old string','new string'):替換。

 SUBSTR(字符串|列,開始點[,結束點]):截取字符串。例:要查詢的一個人名的信息:

select * from emp where ename=UPPER('&str');

其中“&”是屬於替代變量,即要讓你輸入的內容。

②將所有的僱員的姓名小寫返回

select lower(ename) from emp;

2、數字函數

round(數字|列[,保留小數的位數]);四捨五入

trunc(數字|列[,保留小數的位數]):捨棄制定位置的數字。

mod(數字1,數字2):取模,取餘數。

3.日期函數:

取當前日期:

select  sysdate from dual;

SYSDATE
-----------
2012/4/17 1

日期+數字:表示若干天后的日期

日期-數字:表示若干天前的日期

日期(大)-日期(小):表示兩個日期的相隔的天數。

last_day(日期):求出指定日期的在本月的最後一天

select last_day(sysdate) from dual;
 
LAST_DAY(SYSDATE)
-----------------
2012/4/30 10:53:0

next_day(日期,星期數):求出下一個指定星期x的日期;

 select next_day(sysdate,'星期一')  下週一的日期 from dual;
 
NEXT_DAY(SYSDATE,'星期一')
--------------------------
2012/4/23 10:55:39

add_months(日期,數字):求出若干月之後的日期

select add_months(sysdate,4) from dual;
 
ADD_MONTHS(SYSDATE,4)
---------------------
2012/8/17 10:57:31

months_between(日期1,日期2):求出兩個日期之間相隔的月數。

 select months_between(sysdate,hiredate) from emp;

4、轉換函數

 轉換函數是將 數字(number)、字符串(varchar2)、日期(date) 之間互相轉換。

to_char(字符串|列,格式字符串):將日期轉化成要求的格式返回

select to_char(sysdate,'yyyy-MM-dd') 日期 from dual;
 
日期
----------
2012-04-17

想將數字前面的0去掉的話,可以加一個‘fm’:

select to_char(sysdate,'fmyyyy-MM-dd') 日期 from dual;
 
日期
----------
2012-4-17

to_char()也可以格式化數字:例如將9832874293647格式化成9,832,874,293,647的形式。

select to_char(9832874293647,'9,999,999,999,999') from dual;

其中9表示的一位數字

to_date(字符串|列,格式字符串):將字符串轉化成要求的格式日期返回

select to_date('20120909','yyyy-mm-dd') from dual;
 
TO_DATE('20120909','YYYY-MM-DD
------------------------------
2012/9/9

to_number(字符串):轉化成數字。

select to_number('3')+to_number('3') from dual;

這個加法運算下邊也可以實現:

select '3'+'3' from dual;

5、通用函數

nvl():處理null,將空轉化成0

select ename,sal,comm,(sal+nvl(comm,0))*12 from emp;

decode():多條件多數值判斷。

decode(數值|列,判斷值1,顯示值1,判斷值2,顯示值2,判斷值3,顯示值3...)

這些都是成對出現的。例如:我們將僱員中所有人的職位信息轉化成中文

select ename,decode(job,'SALESMAN','銷售員','CLERK','辦事員','MANAGER','經理','ANALYST','分析員','PRESIDENT','主席') from emp;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章