SQL單行函數

所謂的單行函數指的就是完成某一具體功能的操作函數,例如:轉大寫或日期格式的轉換等等。

格式:”返回值 函數名稱(參數)“。

按類型分爲:字符串函數、數值函數、日期函數、轉換函數、通用函數。

字符串函數:

1. 字符串 UPPER(列 | 字符串)     將傳入的字符串變爲大寫字母形式;

2. 字符串 LOWER(列 | 字符串)     將傳入的字符串變爲小寫字母形式;

3. 字符串 INITCAP(列 | 字符串)     開頭首字母大寫,其他字母全變爲小寫;

4. 數字 LENGTH(列 | 字符串)     取得指定字符串的長度;

5. 字符串 SUBSTR(列 | 字符串,開始索引,[長度])    進行字符串的截取,如未設定長度,則從開始索引一直截取到結尾;

6. 字符串 REPLACE(列 | 字符串,舊內容,新內容)    將指定字符串的數據由舊數據替換爲新數據。

示意:

select upper('hello') from dual;    //HELLO
select lower(ename) from emp;    
select * from emp where ename=upper('&inputname');
select ename,initcap(ename) from emp;
select * from emp where length(ename)=5;
select substr('helloworld',6) from dual;    //world
select substr('helloworld',0,5) from dual;    //hello
select ename,substr(ename,length(ename)-2) from emp;    //後三位
select ename,substr(ename,-3) from emp;    //後三位(只有Oracle數據庫纔有)
數值函數:

1. 數字 ROUND(列 | 數字 [,小數位])    實現數據的四捨五入;

2. 數字 TRUNC(列 | 數字 [,小數位])    實現數據的截取,即不進位;

3. 數字 MOD(列 | 數字 ,列 | 數字 )    求模(計算餘數);

示意:

select round(157.5616) from dual;    //158
select round(157.5616,2) from dual;    //157.56
select round(157.5616,-2) from dual;    //200
select trunc(157.5616) from dual;    //157
select trunc(157.5616,1) from dual;    //157.5
select mod(10,3) from dual;    //1
日期函數:

進行日期操作,必須知道當前日期是什麼;僞列:SYSDATE;

有三個操作公式:

·日期+數字=日期(若干天之後的日期);

·日期-數字=日期(若干天之前的日期);

·日期-日期=數字(天數);

示例:

select sysdate-7,sysdate+120 from dual;

有四個日期處理函數:

1. 日期 ADD_MONTHS(列 | 日期,月數)    在指定的日期上增加若干個之後的日期;

2. 數字 MONTHS_BETWEEN(列 | 日期,列 | 日期)     返回兩個日期之間的所經歷的月數;

3. 日期 LAST_DAY(列 | 日期)    取得指定日期所在月數的最後一天;

4. 日期 NEXT_DAY(列 | 日期,'星期X')     返回下一個指定的一週時間數對應的日期。

示例:   

select add_months(sysdate,5) from dual;
select empno,ename,hiredate,months_between(sysdate,hiredate) from emp;
select * from emp where last_day(hiredate)-2 from emp;
select * from emp where hiredate=last_day(hiredate)-2;
select next_day(sysdate,'星期二') from dual;
select empno,ename,hiredate,trunc(months_between(sysdate,hiredate)/12) year from emp;    //年
select empno,ename,hiredate,trunc(months_between(sysdate,hiredate)/12) year,trunc(mod(months_between(sysdate,hiredate),12)) months  from emp;     //年、月
add_months(hiredate,months_between(sysdate-hiredate))    //去除年、月對日期的影響,僱傭日期+僱傭日期至今爲止經歷的月數:
select empno,ename,hiredate,trunc(months_between(sysdate,hiredate)/12) year,trunc(mod(months_between(sysdate,hiredate),12)) months,trunc(sysdate-add_months(hiredate,months_between(sysdate,hiredate))) day  from emp; 
轉換函數

1. 字符串 TO_CHAR(列 | 日期 | 數字,轉換格式)    將日期或數字格式化未指定結構的字符串;

2. 日期 TO_DATE(列 | 字符串,轉換格式)    按照指定的轉換格式編寫字符串後變爲日期型數據;

3. 數字 TO_NUMBER(列 | 字符串)    將字符串變爲數字;

標記:

    ·日期:年(yyyy)、月(mm)、日(dd);

    ·時間:時(hh、hh24)、分(mi)、秒(ss);

    ·數字:任意數字(9)、本地貨幣符號(L)。

示例:

select to_char(sysdate,'yyyy-mm-dd') from dual;

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

select to_char(sysdate,'yyyy'),to_char(sysdate,'mm'),to_char(sysdate,'dd') from dual;

select * from emp where to_char(hiredate,'mm')=2;

select to_char(931287407209,'L999,999,999,999,999,999,999') from dual;

select to_date('1989-10-19','yyyy-mm-dd') from dual;

select to_number('1') + to_number('2') from dual;
通用函數

1. 數字 NVL(列 | NULL,默認值)    如果傳入的內容是NULL,則使用默認數值處理,如果不是NULL則使用原始數值處理;

2. 數據類型 DECODE(列 | 字符串 | 數值,比較內容1,顯示內容1,比較內容2,顯示內容2,...[,默認顯示內容])    設置的內容會與每一個比較內容進行比較,如果內容相同,則會使用顯示內容進行輸出,如果都不相同,則使用最後的默認信息輸出。

示例:

select empno,ename,sal,comm,(sal+comm)*12 from emp;    //沒有佣金的僱員的年薪結果爲空
select empno,ename,sal,comm,(sal+nvl(comm,0))*12 from emp;  
select ename,job from emp;
select ename,job,decode(job,'CLERK','辦事員','SALESMAN','銷售員','MANAGER','經理','---') from emp;





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