Oracle基礎筆記三

第三章 單行函數


Oracle基礎筆記二1.單行函數:

操作數據對象

接受參數返回一個結果

只對一行進行變換

每行返回一個結果

可以轉換數據類型

可以嵌套

參數可以是一列或一個值


2.大小寫控制函數:

LOWER('SQL Course') sql course

UPPER('SQL Course') SQL COURSE

INITCAP('SQL Course')         Sql Course


3.字符控制函數:

CONCAT('Hello', 'World') HelloWorld

SUBSTR('HelloWorld',1,5) Hello

LENGTH('HelloWorld')         10

INSTR('HelloWorld', 'W') 6

LPAD(salary,10,'*') *****24000

RPAD(salary, 10, '*') 24000*****

TRIM('H' FROM 'HelloWorld')         elloWorld

REPLACE(‘abcd’,’b’,’m’)                 amcd


4.數字函數:

ROUND: 四捨五入

ROUND(45.926, 2) 45.93


TRUNC: 截斷

TRUNC(45.926, 2) 45.92


MOD: 求餘

MOD(1600, 300)                 100


5.日期:

Oracle 中的日期型數據實際含有兩個值: 日期和時間。

函數SYSDATE 返回:日期  時間


日期的數學運算:

①在日期上加上或減去一個數字結果仍爲日期。


②兩個日期相減返回日期之間相差的天數。

日期不允許做加法運算,無意義


③可以用數字除24來向日期中加上或減去天數。



6.日期函數:

MONTHS_BETWEEN         兩個日期相差的月數

ADD_MONTHS 向指定日期中加上若干月數

NEXT_DAY 指定日期的下一個星期 * 對應的日期

LAST_DAY 本月的最後一天

ROUND 日期四捨五入

TRUNC 日期截斷

例如:

MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')-------->19.6774194

ADD_MONTHS ('11-JAN-94',6)              -------->'11-JUL-94'

NEXT_DAY ('01-SEP-95','FRIDAY')         -------->'08-SEP-95'

LAST_DAY('01-FEB-95')                   -------->'28-FEB-95'


Assume SYSDATE = '25-JUL-95':

ROUND(SYSDATE,'MONTH')         01-AUG-95

ROUND(SYSDATE ,'YEAR')         01-JAN-96

TRUNC(SYSDATE ,'MONTH')        01-JUL-95 

TRUNC(SYSDATE ,'YEAR')         01-JAN-95


7.隱式數據類型轉換:自動

   顯式數據類型轉換:

①TO_CHAR函數對日期的轉換:

TO_CHAR(date, 'format_model')

格式:

必須包含在單引號中而且大小寫敏感。

可以包含任意的有效的日期格式。

日期之間用逗號隔開。

SELECT TO_CHAR(sysdate,‘yyyy-mm-dd hh:mi:ss’) FROM dual;


時間格式:  HH24:MI:SS AM

                   使用雙引號向日期中添加字符   DD "of" MONTH


②TO_DATE 函數對字符的轉換:

使用 TO_DATE :

TO_DATE(char[,'format_model']) 

使用 TO_DATE 函數將字符轉換成數字:

TO_DATE('2012年10月29日081021','yyyy"年"mm"月"dd"日"hh:mi:ss)

from dual

③TO_CHAR函數對數字的轉換:

TO_CHAR(number, 'format_model')

例如:

SELECT TO_CHAR(salary, '$99,999.00') SALARY

FROM   employees

WHERE  last_name = 'Ernst';

④TO_NUMBER 函數對字符的轉換 :

使用 TO_NUMBER 函數將字符轉換成日期:TO_NUMBER(char[, 'format_model'])

使用 TO_NUMBER :TO_NUMBER(‘¥1,234,567,890.00’,’L999,999,999,999.99’)

from dual


8.通用函數:

這些函數適用於任何數據類型,同時也適用於空值:

①NVL (expr1, expr2)

將空值轉換成一個已知的值:

可以使用的數據類型有日期、字符、數字。

函數的一般形式:

NVL(commission_pct,0)

NVL(hire_date,'01-JAN-97')

NVL(job_id,'No Job Yet')


②NVL2 (expr1, expr2, expr3) : expr1不爲NULL,返回expr2;爲NULL,返回expr3。


③NULLIF (expr1, expr2) :  相等返回NULL,不等返回expr1 


④COALESCE (expr1, expr2, ..., exprn)

COALESCE 與 NVL 相比的優點在於 COALESCE 可以同時處理交替的多個值。

如果第一個表達式爲空,則返回下一個表達式,對其他的參數進行COALESCE 。


9.條件表達式:

在 SQL 語句中使用IF-THEN-ELSE 邏輯

使用兩種方法:

CASE 表達式:

CASE expr WHEN comparison_expr1 THEN return_expr1

         [WHEN comparison_expr2 THEN return_expr2

          WHEN comparison_exprn THEN return_exprn

          ELSE else_expr]

END


DECODE 函數:

DECODE(col|expression, search1, result1 ,

        [, search2, result2,...,]

        [, default])
















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