一、Oracle 內置函數
SQL語言是一種腳本語言,它提供了大量內置函數,使用這些內置函數可以大大增強SQL語言的運算和判斷功能。本節將對Oracle中的一些常用函數進行介紹,如字符類函數、數字類函數、日期和時間類函數、轉換類函數、聚集類函數等。
1.1 字符類函數
1.1.1 字符類函數介紹
字符類函數是專門用於字符處理的函數,處理的對象可以是字符或字符串常量,也可以是字符類型的列。
常用的字符類函數有如下幾種:
ASCII(c)函數和CHR(i)
函數CONCAT(s1, s2)
函數INITCAP(s)
函數INSTR(s1,s2[,i][,j])
函數LENGTH(s)
函數**LOWER(s)
函數和UPPER(s)
函數**LTRIM(s1,s2)
函數、RTRIM(s1,s2)
函數和TRIM(s1,s2)
函數REPLACE(s1,s2[,s3])
函數SUBSTR(s,i,[j])
函數
1.1.2 ASCII(c)
函數和CHR(i)
函數
ASCII©函數用於返回一個字符的ASCII碼,其中參數c表示一個字符;
CHR(i)函數用於返回給出ASCII碼值所對應的字符,i表示一個ASCII碼值。
從這兩個函數的功能中可以看出,它們二者之間具有互逆的關係。
select ascii('Z') Z, ascii('H') H, ascii('D') D , ascii(' ') space from dual;
select chr(90) Z, chr(72) H, chr(68) D , chr(32) space from dual;
dual是Oracle系統內部提供的一個用於實現臨時數據計算的特殊表,它只有一個列DUMMY,類型爲VARCHAR2(1)
1.1.3 CONCAT(s1,s2)
函數
該函數將字符串s2連接到字符串s1的後面,如果s1爲null,則返回s2;如果s2爲null,則返回s1;如果s1和s2都爲空,則返回null。
select concat('hello ', ' world') a,
concat('', ' world') b,
concat('hello ', '') c,
concat('', '') d
from dual;
1.1.4 INITCAP(s)
函數
該函數將字符串s的每個單詞的第一個字母大寫,其他字母小寫。單詞之間用空格、控制字符、標點符號來區分。
select initcap('this is my book!') information from dual;
1.1.5 INSTR(s1,s2[,i][,j])
函數
該函數用於返回字符s2在字符串s1中第j次出現時的位置,搜索從字符串s1的第i個字符開始。
當沒有發現要查找的字符時,該函數返回值爲0;如果i爲負數,那麼搜索將從右到左進行,但函數的返回位置還是按從左到右來計算。其中,s1和s2均爲字符串;i和j均爲整數,默認值爲1。
select instr('this is my book!', 's') a,
instr('this is my book!', 'b') b,
instr('this is my book!', 'e') c
from dual;
1.1.6 LENGTH(s)
函數
該函數用於返回字符串s的長度,如果s爲null,則返回值爲null。
select length('this') a,
length('is') b,
length(' ') c,
length('') d
from dual;
1.1.7 LOWER(s)
函數和UPPER(s)
函數
LOWER(s)函數和UPPER函數(s)分別用於返回字符串s的小寫形式和大寫形式,這兩個函數經常出現在WHERE子句中。
select lower('MY BOOK!') a,
lower('my BOOK!') b,
upper('my book!') c,
upper('my BOOK!') d
from dual;
1.1.8 LTRIM(s1,s2)
函數、RTRIM(s1,s2)
函數和TRIM(s1,s2)
函數
LTRIM(s1,s2)
函數用來刪除字符串s1左邊的字符串s2RTRIM(s1,s2)
函數用來刪除字符串s1右邊的字符串s2TRIM(s1,s2)
函數**用來刪除字符串s1左右兩端的字符串s2。
如果在這3個函數中不指定字符串s2,則表示去除相應方位的空格。
select ltrim('book!', 'b') a,
ltrim(' book!') b,
RTRIM('book!', '!') c,
RTRIM('book! ') d,
TRIM(' boob ') e
from dual;
1.1.9 REPLACE(s1,s2[,s3])
函數
該函數使用s3字符串替換出現在s1字符串中的所有s2字符串,並返回替換後的新字符串,其中,s3的默認值爲空字符串。
select replace('book!', 'b','o') a,
replace('book!', 'o','') b
from dual;
1.1.10 SUBSTR(s,i,[j])
函數
該函數表示從字符串s的第i個位置開始截取長度爲j的子字符串。如果省略參數j,則直接截取到尾部。其中,i和j爲整數。
select SUBSTR('book!', 2) a,
SUBSTR('book!', 1, 3) b
from dual;
1.2 數字類函數
1.2.1 數字類函數介紹
數字類函數主要用於執行各種數據計算,所有的數字類函數都有數字參數並返回數字值。Oracle系統提供了大量的數字類函數,這些函數大大增強了Oracle系統的科學計算能力。
在上表中列舉了若干三角函數,這些三角函數的操作數和返回值都是弧度,而不是角度。
1.2.2 CEIL(n)
函數
該函數返回大於或等於數值n的最小整數,它適合於一些比較運算。
select ceil(4) a,
ceil(4.1) b,
ceil(-4.1) c
from dual;
1.2.3 ROUND(n1,n2)
函數
該函數返回舍入小數點右邊n2位的n1的值,n2的默認值爲0,這會返回小數點最接近的整數。如果n2爲負數,就舍入到小數點左邊相應的位上,n2必須是整數。
select round(4, 2) a,
round(4.1, 2) b,
round(4.111, 2) c,
round(-4.1, 2) d
from dual;
1.2.4 POWER(n1,n2)函數
該函數返回n1的n2次方。
select power(2, 2) a,
power(2.5, 2) b,
power(-2.5, 3) c,
power(2, -2) d
from dual;
1.3 日期和時間類函數
1.3.1 日期和時間類函數介紹
在Oracle 11g中,系統提供了許多用於處理日期和時間的函數,通過這些函數可以實現計算需要的特定日期和時間,常用的日期和時間函數如圖所示。
日期類型的默認格式是“DD-MON-YY”,其中DD表示兩位數字的“日”,MON表示3位數字的“月份”。YY表示兩位數字的“年份”,例如,“01-10月-11”表示2011年10月1日。
1.3.2 SYSDATE()
函數
該函數返回系統當前的日期。
select sysdate from dual;
1.3.3 ADD_MONTHS(d,i)
函數
該函數返回日期d加上i個月之後的結果。其中,i爲任意整數。
select add_months(sysdate, 6) newdate from dual;
1.4 轉換類函數
1.4.1 轉換類函數介紹
在操作表中的數據時,經常需要將某個數據從一種類型轉換爲另外一種數據類型,這時就需要轉換類型函數。比如常見的,有把具有“特定格式”字符串轉換爲日期、把數字轉換成字符等。
常用的轉換函數如圖所示。
1.4.2 TO_CHAR()
函數
該函數實現將表達式轉換爲字符串,format表示字符串格式。
select to_char(sysdate, 'yyyy-mm-dd') as today from dual;
1.4.3 TO_NUMBER(s[,format[lan]])
函數
該函數將返回字符串s代表的數字,返回值按照format格式進行顯示,format表示字符串格式,lan表示所使用的語言。 【
select to_number('16') as a,
to_number('16','xxx') as b,
to_number('2f','xxx') as c
from dual;
1.5 聚集類函數
1.5.1 聚集類函數介紹
使用聚合類函數可以針對一組數據進行計算,並得到相應的結果。比如常用的操作有計算平均值、統計記錄數、計算最大值等。
Oracle 11g所提供的主要聚合函數如圖所示。
select avg(sal) avg,
count(ename) count,
max(sal) max,
min(sal) min,
sum(sal) sum,
variance(sal) variance,
stddev(sal) stddev
from scott.emp
參考文獻:
- Oracle 11g從入門到精通 第二版,明日科技 著,清華大學出版社有限公司