【ORACLE】ORACLE常用功能函數

ORACLE常用函數功能演示

文檔撰寫:孟祥新

 

寫在前面:

ORACLE內置函數,相當於C語言中的庫函數,提供了常規數據庫編程中所需的絕大多數基本功能,並且通過函數的組合或嵌套使用,可以發揮其強大的功能。由於這些內置函數都是由ORACLE公司的編程大家所寫,而且其執行代碼是內嵌在ORACLE數據庫系統中的,因此其執行效率極高。

在數據庫編程中能廣泛使用ORACLE所提供的內置函數,將大大提高程序代碼的執行效率。“站在高人的肩膀上,將使你變得更高”。

 

演示之前的環境設置:

爲了在SQL*PLUS中直觀地顯示函數返回的結果,我將“頭”信息先屏蔽掉。操作如下:

spacer.gif

 

 

一、單行函數

1.  數值函數

(1)       三角函數

     SINASINSINH(正弦、反正弦、雙曲正弦)

     COSACOSCOSH(餘弦、反餘弦、雙曲餘弦)

     TANATANTANH(正切、反正切,雙曲正切)

 

(2)       冪、方根及對數運算函數

     POWER(m, n)(取mn次冪)

     SQRT(n)(取n的平方根)

     EXP(n)(取自然對數底en次方根)

     LN(n)(取n的自然對數)

     LOG(m, n)(取以m爲底n的對數)

以上函數功能演示如下:

spacer.gif

 

(3)       數值處理函數

     ABS(n)(取絕對值)

     SIGN(n)(符號函數)

     CEIL(n)(取不小於n的最小整數)

     FLOOR(n)(取不大於n的最大整數)

     ROUND(n, [m])(按m精度對n進行45入)

     TRUNC(n, [m])(按m精度對n進行截取)

     MOD(m, n)(取m除以n的餘數)

 

以上函數功能演示如下:

spacer.gif

 

2.  字符處理函數

(1)       對字符串的大小寫處理的函數

     INITCAP(功能:將字符串中每個單詞的首字母,變換爲大寫。)

     UPPER(功能:將字符串中的所有字母,轉換爲大寫。)

     LOWER(功能:將字符串中的所有字母,轉換爲小寫。)

 

以上函數功能演示如下:

spacer.gif

 

(2)       對字符串進行處理的函數

     CONCAT(字符串連接函數,也可用 || 替代)

功能演示如下:

spacer.gif

 

     ASCII(取字符的編碼)

     CHR(將編碼轉換爲對應的字符)

以上函數功能演示如下:

spacer.gif

 

     LTRIM(去除左側空格/指定字符)

     RTRIM(去除右側空格/指定字符)

     TRIM(去除兩側的空格/去除指定字符)

 

以上函數去除空格功能演示如下:

spacer.gif

 

以上函數去除指定字符功能演示如下:

spacer.gif

請注意:在用TRIM去除字符串中指定字符(非空格)時的特殊用法。

 

     LPAD(左側添充空格/指定字符)

     RPAD(右側添充空格/指定字符)

以上函數功能演示如下:

spacer.gif

 

     LENGTH(取字符串的長度)

     SUBSTR(截取子字符串)

用法格式:SUBSTR(string, start [,length])

功能說明:從字符串stringstart位置開始向後截取length長度的子串

 

以上函數功能演示如下:

spacer.gif

 

     INSTR(查找子字符串的位置)

用法格式:INSTR(string, search_string [,n [,m]])

功能說明:從字符串string的第n個字符開始查找search_stringm次出現的位置,如果按條件沒有找到字符串,則返回0

注意:此函數返回的位置是以原字符串首字符所在位置爲起始點的,首字符位置爲1

 

函數功能演示如下:

spacer.gif

 

     REPLACE(子串替換)

用法格式:REPLACE(string, search_string [,replace_string])

功能說明:將字符串string中的所有search_string都替換爲replace_string,如果省略replace_string,則將字符串string中的所有search_string都去掉。

     TRANSLATE(字符轉換)

用法格式:TRANSLATE(string, search_set, replace_set)

功能說明:將string中出現在search_set中的字符轉換爲replace_set相應位置的字符。

 

以上函數功能演示如下:

spacer.gif

 

3.  日期函數

     SYSDATE(取當前的數據庫系統時間)

     ADD_MONTHS(加減指定的月份)

     MONTHS_BETWEEN(取兩個日期之間相隔的月數)

     LAST_DAY(取指定日期所在月的最後一天)

 

以上函數功能演示如下:

spacer.gif

     ROUND(date, ‘format_string’)

       功能:按日期掩碼format_string的格式對給定的日期date進行舍/入。

     TRUNC(date, ‘format_string’)

       功能:按日期掩碼format_string的格式對給定的日期date進行截取。

 

以上函數功能演示如下:

spacer.gif

 

4.  類型轉換函數

功能:在數值和字符,以及字符和日期之間進行數據類型的轉換

說明:在ORACLE數據服務器,可以對數值形式的字符串隱式地轉換爲數值類型的數據,也可以將數值類型的數據隱式地轉換爲數值形式的字符串。但也可以進行如下的顯式轉換。

     TO_CHAR(n)(將數值n轉換爲字符類型)

     TO_NUMBER(‘string’)(將字符串string轉換爲數值類型)

知識擴展:常用進制的轉換

spacer.gif

 

     TO_CHAR(date, ‘format_string’)(按照時間掩碼format_string的格式要求,將日期型數據date轉換爲字符型數據)

     TO_DATE(‘string’, ‘format_string’)(將字符型數據string按照時間掩碼format_string的格式要求,轉換爲相應的日期型數據)

 

常用的時間格式掩碼如下:

掩碼元素

含義

YYYY

四位數年份 (如:2005)

YY

二位數年份(如  05

Q

季度(1-4

MM

月份(01-12

WW

年的星期數(1-53),其中第一星期爲年的第一天至第七天

W

月的星期數(1-5),其中第一星期爲月的第一天至第七天

DDD

年的日(1-366

DD

月的日(1-31

D

周的日(1-7),其中週日爲1,週六爲7

HH24 

24小時制(0-23

MI

分鐘(0-59

SS

秒(0-59

SSSSS

自午夜之後的秒(0-86399

 

以上函數功能演示如下:

spacer.gif

 

5.  空值轉換函數

     NVL(expr1, expr2)

       功能:如果 expr1 的計算結果爲 null 值,則返回 expr2 的值。如果 expr1 的計算結果不是 null 值,則返回 expr1 的值

     NVL2(expr1, expr2, expr3)

       功能:如果expr1非空,則返回expr2的值;如果expr1爲空,則返回expr3的值。

     NULLIF(expr1, expr2)

       功能:比較兩個表達式,如果相等返回空;如果不相等,返回第一個表達式的值。

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

       功能:返回表達式列表中的第一個非空表達式的值。

 

6.  查看環境參數函數

(1)       USER函數             (返回當前用戶名)

(2)       USERENV函數

         USERENV('ISDBA')                   (查看當前用戶是否是DBA

         USERENV('LANGUAGE')          (查看環境所用的字符集)

         USERENV('TERMINAL')            (查看當前用戶終端的標識)

以上函數用法演示如下:

select USERENV('ISDBA'), USERENV('LANGUAGE'), USERENV('TERMINAL') from dual;

(3)       SYS_CONTEXT函數

       說明:SYS_CONTEXT函數是在ORACLE 8i中新增的,在功能上比USERENV函數更加全面。

       用法格式:SYS_CONTEXT('USERENV', '<parameter>')

根據參數parameter來返回相應的信息

     登錄驗證類型

select SYS_CONTEXT('USERENV', 'AUTHENTICATION_TYPE') from dual;

     當前登錄數據庫的用戶名

select SYS_CONTEXT('USERENV', 'CURRENT_USER') from dual;

     當前登錄客戶端的操作系統用戶名

select SYS_CONTEXT('USERENV', 'OS_USER') from dual;

     當前所在客戶機名(包括所在工作組名)

select SYS_CONTEXT('USERENV', 'HOST') from dual;

     當前所在客戶機/終端名

select SYS_CONTEXT('USERENV', 'TERMINAL') from dual;

     當前所在客戶端的IP

select SYS_CONTEXT('USERENV', 'IP_ADDRESS') from dual;

     當前是否爲DBA帳戶

select SYS_CONTEXT('USERENV', 'ISDBA') from dual;

     當前的字符集

select SYS_CONTEXT('USERENV', 'LANGUAGE') from dual;

     當前所使用的網絡協議

select SYS_CONTEXT('USERENV', 'NETWORK_PROTOCOL') from dual;

     當前所使用的日曆

select SYS_CONTEXT('USERENV', 'NLS_CALENDAR') from dual;

     當前的貨幣單位

select SYS_CONTEXT('USERENV', 'NLS_CURRENCY') from dual;

     當前的日期格式

select SYS_CONTEXT('USERENV', 'NLS_DATE_FORMAT') from dual;

     當前的日期語言

select SYS_CONTEXT('USERENV', 'NLS_DATE_LANGUAGE') from dual;

     當前所在的地域

select SYS_CONTEXT('USERENV', 'NLS_TERRITORY') from dual;

     當前代理用戶

select SYS_CONTEXT('USERENV', 'PROXY_USER') from dual;

 

7.  DECODE函數

DECODE函數用法格式與說明:

格式:

DECODE(col|expression,

                          search1, result1

                          [, search2, result2 ]

                          [, search3, result3 ]

                          [, ......,  ......  ]

                          [, default]

         )

說明:

第一個參數可是是表的列,也可以是一個表達式。

如果第一參數的值與search1相等,則函數返回result1的值;

如果第一參數的值與search2相等,則函數返回result2的值;以此類推。

如果第一參數的值與所有的search都不相等,則函數返回default的值。

 

此函數用法示例如下:

spacer.gif

 

二、聚組函數

功能:對一組數據進行運算。

函數

功能描述

MAX

最大值

MIN

最小值

AVG

平均值

COUNT

數量值

SUM

總計值

以上函數功能演示如下:

spacer.gif

 

三、分析函數

分析函數簡介:ORACLE8.1.6版開始提供分析函數,分析函數用於計算基於組的某種聚合值,它和聚組函數的不同之處是對於每個組返回多行值,而聚組函數對於每個組只返回一行值。

ORACLE有一整套分析函數,功能極其強大,用法也非常靈活,關於這一塊的功能演示,請待續……

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