Oracle 的函數分為基本函數和分析函數,
其中基本函數是最常用的,而分析函數的話,
傳言是在資料倉儲這類的東西中才會經常用到,
在這篇博文中,則只是介紹最常用的 Oracle 基本函數。
介紹呢,會依照下面的路線進行,
字元函數
數字函數
日期函數
轉換函式
組函數
先是字元函數開始吧
1. ASCII(c)
其中 c 呢是一個字串參數,這個函數的作用就是通過傳遞進去的字串,
然後返回這個字串第一個字母的 ASCII 碼值,
2. CHR(i)
其中的 i 是一個數字,然後會返回一個用十進位表示的字元,也就是 ASCII(c)的逆函數
3. CONCAT(c1,c2)
這個函數中有兩個字串參數,這個函數的功能就是將兩個字串拼接起來
4. INITCAP(c1)
這個函數比較特殊,其擁有一個字串參數 c1 ,
它的功能是將字串中的每個單詞的第一個字母大寫,而其他字母小寫返回,
其中單詞又空格,控制字元,標點符號來限制
5. INSTR(c1,c2,i,j)
這個函數呢,其中參數比較多,有四個,c1 和 c2 為字串,而 i , j 則為數字,
i 和 j 兩個參數是可選的,也就是說可以沒有這兩個參數,這是因為這兩個參數均有預設值,
均為 1
這個函數的功能為,返回 c2 在 c1 中第 j 次出現的位置,其實這也就是一個搜尋過程,
而搜尋的起始位置則是由 i 確定的,i 確定從 c1 中第 i 個字元開始匹配
6. LENGTH(c)
這個函數呢,功能就很明顯了,就是返回傳遞進去的參數 c 這個字串的長度
7. LOWER(c)
這個函數的功能也是比較明顯的,
就是將傳遞進來的參數即一個字串 c 全部轉換為小寫後返回
8. UPPER(c)
這個函數的功能就是將 c 這個字串中的字元全部大寫後返回
9. LPAD(c1,i,c2)
其中有三個參數,c1 和 c2 是字串,而 i 則為數字,
如果 i 小於 c1 的長度,那麼只返回 i 那麼長的 c1 的字元,其他的將被截去,
否則在 c1 的左側使用 c2 字串補足到長度 i ,可以多次重複,
c2 的預設值為單空格。這個函數返回的字串的長度一定是 i
10. RPAD(c1,i,c2)
這個函數呢和上面的功能差不多,只不過上面的 LPAD 函數是從左至右補充,
而這個 RPAD 則是從右至左進行補充,
也就是當 i 的值小於 c1 的長度時,直接將 c1 進行截取然後返回長度為 i 的字串,
當 i 的值大於 c1 的長度時,便使用 c2 對 c1 從右至左進行補充
11. LTRIM(c1,c2)
這個函數的功能是把 c1 最左邊的字元去掉,使其第一個字元不在 c2 這個字串中
如果不能理解的,請注意比較下面的中的各個結果
12. RTRIM(c1,c2)
這個函數也和上面的函數功能類似,只不過不是從左邊開始比較了,而是從字串 c1 的右邊比較,
使 c1 的最右邊的字母不在 c2 這個字串中
13. REPLACE(c1,c2,c3)
這個函數的作用比較特殊,是使用 c3 來代替在 c1 中出現的 c2 ,然後將結果返回
14. SUBSTR(c1,i,j)
上面的參數中 c1 是字串,i 和 j 是數字,而且 j 這個參數是可選的,即是可以沒有的,
從 c1 的第 i 位開始返回長度為 j 的截取後的字串,如果 j 位空,則直到 c1 的尾部
說白了你,就是 C# 中的 substring 函數
15. TRANSLATE(c1,c2,c3)
這個函數的功能就是將 c1 和 c2 中相同的字元使用 c3 來代替,然後再返回結果
這個函數呢,由於比較難以解釋,所以還需按著下面的來說明,
比如,BaoBeiMe 中的第一個字母和 Bei 中的第一個字母是相同的,
故使用 Xza 中的第一個字母取代,
而 BaoBeiMe 中的 Bei 和 Bei 中的三個字元全部匹配,所以必須使用 Xza 一起進行替代 Bei
16. TRIM(c1 from c2)
該函數使用者從字串的頭部,尾部和兩端截斷特定的字元,
c1 為要截取的字元,c2 為源字串
再是數字函數
這裡說到數學函數呢,說實在的,和 C# 裡的 Math 下的數學函數差不多了,
需要注意的就是在 Oracle 中所有的三角函數的參數和值都是弧度而非角度。
1. ABS(n)
這個函數見多了的,就是求 n 的絕對值
2. CEIL(n)
返回 >= n 的最小整數
3. FLOOR(n)
返回 <= n 的最大整數
4. SIN(n)
返回弧度為 n 的正弦值
5. COS(n)
返回弧度為 n 的餘弦值
6. TAN(n)
返回弧度為 n 的正切值
7. EXP(n)
返回 e 的 n 次冪值即 e^n
8. POWER(n1,n2)
返回 n1 的 n2 次方,即 n1^n2
9. MOD(n1,n2)
返回 n1 除以 n2 的餘數,即 n1%n2
10 . LN(n)
返回 n 的自然對數
11. LOG(n1,n2)
返回以 n1 為底的 n2 的對數
12. SQRT(n)
返回 n 的平方根
13. TRUNC(n1,n2)
返回截尾到 n2 位小數的 n1 的值,n2 的預設值為 0,
當 n2 為預設值設定時,會將 n1 截尾為整數,如果 n2 為負數,
就截尾在小數點左邊的相應的位上。
14. ROUND(n1,n2)
返回四捨五入小數點右邊 n2 位的 n1 的值,n2 的預設值為 0
15. SIGN(n)
n < 0 則返回 –1
n > 0 則返回 1
n = 0 則返回 0
再是日期函數
既然是日期函數的話,那麼肯定操作的就是日期類型的資料了,
1. SYSDATE
這個函數呢,比較特殊,沒有參數,所以也不需要加什麼括弧之類的了,
直接裸用就 OK 了,這個函數的作用就是返回當前的時間和日期
2. ADD_MONTHS(d,i)
返回日期 d 加上 i 個月後的結果, i 可以是任意整數。
3. LAST_DAY(d)
返回日期 d 所在月份的最後一天
4. MONTHS_BETWEEN(d1,d2)
返回日期 d1 和 日期 d2 之間月的數目
5. TRUNC(d,format)
返回由 format 指定的單位的日期 d
比如您可以指定 format 為 y ,則表明是返回指定日期所在的年(以年為單位)
如果指定 format 為 mm ,則表明是返回指定日期所在的月(以月為單位)
如果指定 format 為 d ,則表明是返回指定日期所在的天(以天為單位)
再是轉換函式
轉換函式,用於在多種資料類型之間轉換
1. ROWIDTOCHAR(rowid)
這個函數的功能就是將類型為 ROWID 的參數 rowid 轉換為字串類型
2. CHARTOROWID(c)
這個函數呢,和上面的 ROWIDTOCHAR 的功能相反,是將字串 c 轉換為 ROWID 資料類型
3. TO_CHAR(x,format)
這個函數的功能就是將一個參數 x 轉換為字串類型,
其中 x 可以是 number 或者 date 類型
4. TO_DATE(c,format)
將字串轉換為 Date 資料類型
5. TO_NUMBER(c)
將一個字串參數轉換為 number 資料類型
再是組合函數
這個呢就比較常用了,就是 COUNT() 啊,AVG()啊,MAX(),MIN()這些了
這些就不多做介紹了