Oracle 數據庫(十一)—— Oracle SQL語言之內置函數

一、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左邊的字符串s2
  • RTRIM(s1,s2)函數用來刪除字符串s1右邊的字符串s2
  • TRIM(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

在這裏插入圖片描述
參考文獻:

  1. Oracle 11g從入門到精通 第二版,明日科技 著,清華大學出版社有限公司
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章