SQL語言是一種腳本語言,提供了大量的內置函數,使用這些函數能夠大大加強SQL語句的運算和判斷功能。sql
字符類函數是專門用於字符處理的函數,處理的對象能夠是字符或字符串常量,也能夠是字符類型的列,經常使用的字符類函數有如下幾種:函數
一、ASCII(c)函數和 CHR(i)函數spa
ASCII(c) 函數用於返回一個字符的 ASCII碼,其中參數 c 表示一個字符;code
CHR(i) 函數用戶返回給出 ASCII 碼值所對應的字符,i 表示一個 ASCII 碼值。orm
1 SQL > select ascii('Z') Z, ascii('H') H from dual; 2
3 Z H 4 --------------
5 90 72
1 SQL > select chr(90),chr(72) from dual; 2
3 C C 4 -----------------
5 Z H
說明:dual表是 Oracle 系統內部提供的一個用於實現臨時數據計算的特殊表,也稱名義表,它只有一個列 dummy,類型爲varchar2(1).對象
2、Concat(s1,s2) 函數blog
該函數將字符串 s2 鏈接到字符串 s1 的後面,若是 s1 爲 null,則返回 s2;若是 s2 爲null,則返回 s1; 若是 s1 和 s2 都爲空,則返回null。ci
SQL > select concat('hello ','World!') from dual;
concat
---------
hello World!
三、Initcap(s) 函數字符串
該函數將字符串 s 的每一個單詞的第一個字母大寫,其餘字母小寫,單詞之間用空格、控制字符、標點符號來區分。it
SQL > select initcap('hello world!') info from dual;
info
---------
Hello Wordl!
四、Instr(s1,s2 [,i] [,j]) 函數
該函數用戶返回字符 s2 在字符 s1 中第 j 次出現的位置,搜索從字符串 s1 的第 i 個字符開始。當沒有發現要查找的字符時,該函數返回值爲 0 ;若是 i 爲負數,那麼搜索將從右到左進行,但函數的返回位置仍是從左到右來計算。其中, s1 和 s2 均爲字符串,i 和 j 均爲正整數,默認值爲1。
SQL > select instr('hello world123','l',2,3) info from dual;
info
---------
10
在字符串「hello world123」 中,從第2個字符開始查詢字符串 ‘l’ 第3次出現的位置。
五、length(s) 函數
該函數用於返回字符串 s 的長度,若是 s 爲null,則返回值 null。
SQL > select length('hello world') info from dual;
info
-------
11
六、Lower(s)函數和 Upper(s)
Lower 該函數用於返回字符串的小寫形式;Upper 該函數用於返回字符串的大寫形式。
SQL > select lower('HELLO') info1, upper('hello') into2 from dual;
info1 info2
-------------------
hello HELLO
七、Ltrim(s1,s2) 函數、Rtrim(s1,s2) 和 Trim(s1,s2) 函數
Ltrim 該函數用於刪除字符串 s1 左邊的字符串 s2;Rtrim 函數用於刪除字符串 s1 右邊的字符串 s2, Trim 函數用於刪除字符串 s1 左右兩端字符串 s2。
若是在這個3個函數中不知道字符串 s2 ,則表示去除相應方位的空格。
SQL > select ltrim('-----hello','-') info1,ltrim(' hello') info2 from dual;
info1 info2
------------------
hello hello
八、Replace(s1,s2[ ,s3]) 函數
該函數使用 s3 字符串替換出現 s1 字符串中的全部 s2 字符串,並返回替換後的新字符串,其中,s3 的默認值爲空字符串。
SQL > select replace('good luck!','o','l') info from dual;
info
----------
glld luck
九、Substr(s,i,[ j ]) 函數
該函數表示從字符串 s 的第 i 個位置開始截取長度爲 j 的子字符串。若是省略參數 j ,則直接截取到尾部,其中,i 和 j 爲正整數。
SQL > select substr('hello',2,2) info1,substr('hello',2) info2 from dual;
info1 info2
------------------
el ello
數字類函數主要用於執行各類數據計算,全部的數字類函數都有數字參數並返回數字值。 Oracle 系統提供了大量的數字類函數,這些函數大大加強了 Oracle 系統的科學計算能力。
經常使用的數字類函數:
函數 | 說明 |
ABS(n) | 返回 n de 絕對值 |
Ceil(n) | 返回大於或等於數值 n 的最下整數 |
cos(n) | 返回 n 的餘弦值,n 爲弧度 |
exp(n) | 返回 e 的 n 次冪,e= 2.71828183 |
florr(n) | 返回小於或等於 n 的最大整數 |
log(n1,n2) | 返回以 n1 除以 n2 的對數 |
mod(n1,n2) | 返回 n1 除以 n2 的餘數 |
power(n1,n2) | 返回 n1 的 n2 次方 |
round(n1,n2) | 返回舍如小數點右邊 n2 位的 n1 的值,n2 的默認值爲0,會返回小數點最接近的整數。 若是n2 爲負數,就舍入到小數點左邊相應的位上,n2 必須是整數 |
sign(n) | 若 n 爲負數,則返回-1,若 n 爲整數,則返回 1, 若 n = 0,則返回0 |
sin(n) | 返回 n的正弦值,n 爲弧度 |
sqrt(n) | 返回 n的平方根 |
trunc(n1,n2) | 返回結尾到 n2 位小數的 n1的值,n2 默認設置爲 0 , 當 n2 爲默認設置時,會將 n1 截尾爲整數,若是 n2 爲負值,就截尾在小數點左邊相應的位上 |
一、Ceil(n) 函數
該函數返回大於或等於數值 n 的最小整數,經常使用於一些比較運算。
SQL > select ceil(8.3) info1,ceil(-5.6) info2,ceil(8.6) info3 from dual;
info1 info2 info3
-----------------------
8 -5 9
二、Round(n1,n2) 函數
該函數返回舍入小數點右邊 n2 位的 n1 的值,n2 的默認值爲 0,這會返回小數點最接近的整數。若是 n2 爲負數,就舍入到小數點左邊相應的位上,n2 必須是整數。
SQL > select round(3.14159,2) info1, round(343.14159,-1) into2 from dual;
info1 info2
---------------------
3.14 340
三、Power(n1,n2) 函數
該函數返回 n1 的 n2 次方,其中 n1 和 n2 都爲整數。
SQL > select power(2,4) info from dual;
info
-------
16
Oracle 系統提供了許多用於處理日期和時間的函數,經過這下函數能夠實現計算須要的特定的日期和時間,經常使用函數以下:
函 數 | 說 明 |
add_month(d,i) | 返回日期 d 駕駛 i 個月以後的結果,i 爲任意整數 |
last_day(d) | 返回包含日期 d 月份的最後一天 |
months_between(d1,d2) | 返回 d1 和 d2 之間的數目,若 d1 和 d2 的日期都相同,或者都是該月的最後一天, 則返回一個整數,不然返回的結果將包含一個小數 |
new_time(d1,t1,t2) | 其中,d1 是一個日期數據類型,當時區 t1 中的日期和時間是 d1時,返回市區 t2 中的日期 和時間。t1 和 t2 是字符串。 |
sysdate() | 返回系統當前的日期 |
注意:日期默認的格式是 「DD-MON-YY」,其中 「DD」 表示兩位數字的 「日」,MON 表示3位數的字的「月份」,「YY」表示兩位數字的「年份」。例如:「01-10月-11」表示2011年10月1日。
一、sysdate()函數
該函數返回系統當前的日期。
SQL > select sysdate as 系統日期 from dual;
系統日期
-----------
30-5月-19
二、add_months(d,i) 函數
該函數返回日期 d 加上 i 個月以後的結果。其中,i 爲任意整數。
SQL > select add_months(sysdate,6) info from dual;
info
-----------
30-11月-19
在操做表中的數據時,常常須要將某個數據從一種類型轉換爲另一種數據類型,這時須要轉換類型函數。經常使用的轉換函數以下:
函 數 | 說 明 |
chartorwida(s) | 該函數將字符串 s 轉換爲 rwid 數據類型 |
convert(s,aset [,bset]) | 該函數將字符串 s 由 bset 字符集轉換爲 aset 字符集 |
rowidtochar() | 該函數將 rowid 數據類型轉換爲 char 類型 |
to_char(x[,format]) | 該函數實現將表達式轉換爲字符串,format 表示字符串格式 |
to_date(s [,format[lan]]) | 該函數將字符串 s 轉換成 date 類型,formate 表示字符串格式,lan 表示所使用的語言 |
to_number(s [,format[lan]]) | 該函數將返回字符串 s 表明的數字,返回值按照 format 格式進行顯示,format 表示字符串 格式,lan 表示所使用的語言 |
一、to_char(x [,format]) 函數
該函數實現將表達式轉換爲字符串,format 表示字符串格式
SQL > select sysdate as 默認格式日期,to_char(sysdate,'YYYY-MM-DD') as 轉換後日期 from dual;
默認格式日期 轉換後日期
---------------------------------
30-5月-19 2019-05-30
二、to_number(s [,format[lan]]) 函數
該函數將返回字符串 s 表明的數字,返回值按照 format 格式進行顯示, format 表示字符串格式,lan 表示所使用的語言。
SQL > select to_number('18','xxx') as 十進制數 from dual;
十進制數
-------------
24
使用聚合類函數能夠針對一組數據進行計算,並獲得相應的結果。下面是經常使用的聚合函數:
函數 | 說明 |
avg(x[ distinct | all ]) | 計算選擇列表項的平均值,列表項目能夠是一個列或多個列的表達式 |
count(x[ distinct | all ]) | 返回查詢結果中的記錄數 |
max(x[ distinct | all ]) | 返回選擇列表項目中的最大數,列表項目能夠是一個列或多個列的表達式 |
min(x[ distinct | all ]) | 返回選擇列表項目中的最小數,列表項目能夠是一個列或多個列的表達式 |
sum(x[ distinct | all ]) | 返回選擇列表項目中的數值總和,列表項目能夠是一個列或多個列的表達式 |
variance(x[ distinct | all ]) | 返回選擇列表項目中的統計方差,列表項目能夠是一個列或多個列的表達式 |
stddev(x[ distinct | all ]) | 返回選擇列表項目中的標準誤差,列表項目能夠是一個列或多個列的表達式 |