Oracle數據庫開發利器之函數

函數的作用:
方便數據的統計
處理查詢結果

函數的分類:數值函數字符函數日期函數轉換函數

數值函數

四捨五入
取整函數
常用計算
三角函數

四捨五入:

  • ROUND(n[,M])
  • 省略m : 0
  • m>0:小數點後m位
  • m<0:小數點前m位
    n表示要進行四五入的值
    m表示保留小數點後幾位或前幾位

    select round(23.4),round(23.45,1),round(23.45,-1) from dual;

取整函數:

  • double floor(double x);
  • double ceil(double x);
  • 使用floor函數。floor(x)返回的是小於或等於x的最大整數。
    如:floor(10.5) == 10 floor(-10.5) == -11
  • 使用ceil函數。ceil(x)返回的是大於x的最小整數。
    如:ceil(10.5) == 11 ceil(-10.5) ==-10
    floor()是向負無窮大舍入,floor(-10.5) == -11;
    ceil()是向正無窮大舍入,ceil(-10.5) == -10

常用計算:

  • ABS(n)
  • MOD(m,n)//m除以n的餘數,如果m和n中有一個值爲null值,則結果返回null值
  • POWER(m,n)//表示返回m的n次冪,23用POWER(2,3)表示
  • SQRT(n)//16的平方根表示爲sqrt(16),結果是4

    select ABS(-7) from dual; //返回絕對值,返回7
    select mod(5,3) from dual; //返回2
    select power(2,3) from dual;//返回8
    select sqrt(16) from dual;//返回4

三角函數:

  • SIN(x)
    【功能】返回一個數字的正弦值
    【示例】select sin(1.57079) from dual;
    返回: 1

  • SIGH(x)
    【功能】返回雙曲正弦的值
    【示例】select sin(20),sinh(20) from dual;
    返回:0.91294525, 242582598

  • COS(x)
    【功能】返回一個給定數字的餘弦
    【示例】select cos(-3.1415927) from dual;
    返回: -1

  • COSH(x)
    【功能】返回一個數字反餘弦值
    【示例】select cosh(20) from dual;
    返回:242582598

  • TAN
    【功能返回數字的正切值
    【示例】select tan(20),tan(10) from dual;
    返回:2.2371609 ,0.64836083

  • TANH
    【功能返回數字n的雙曲正切值
    【示例】select tanh(20),tan(20) from dual;
    返回:1 ,2.2371609

  • ASIN(x)
    【功能】給出反正弦的值
    【示例】select asin(0.5) from dual;
    返回:0.52359878

  • ACOS(x)
    【功能】給出反餘弦的值
    【示例】select acos(-1) from dual;
    返回:3.1415927

  • ATAN(x)
    【功能】返回一個數字的反正切值
    【示例】 select atan(1) from dual;
    返回:0.78539816

字符函數

大小寫轉換函數
獲取子字符串函數
獲取字符串長度函數
字符串連接函數
去除子串函數
替換函數

大小寫轉換函數:

  • UPPER(char)//返回所有大寫
  • LOWER(char)//返回所有小寫
  • INITCAP(char)//返回首字母大寫,其餘都小寫
  • 大小寫轉換函數的用途:註冊用戶名

select upper(‘aBde’),lower(‘ASSsSS’),initcap(‘aBbB’) from dual;

獲取子字符串函數:

  • SUBSTR(char,[m[,n]])
  • char代表源字符串,m代表取子串的開始位置,n代表截取子串的位數
  • 當n省略時代表從m的位置截取到字串末尾
  • m爲0,代表從字符串的首字母開始截取
  • m爲負數,表示從字符串的尾部開始截取
    select substr(‘abcd’,2,3) from dual; //返回bcd

獲取字符串長度函數:

  • LENGTH(char)
  • 空格也算一個字符
    select LENGTH(‘abcd’) from tmp;//返回4

字符串連接函數:

  • CONCAT(char1,char2)
  • 與||操作符的作用一樣
    select concat(‘ab’,’cd’) from dual; //返回abcd
    select ‘ab’||’cd’ from dual;//返回abcd

去除子串函數

  • TRIM(c2 FROM c1)
  • 該函數表示從字符串c1中去除字符c2
  • select trim(‘d’ from ‘abcd’) from dual;//返回abc

  • LTRIM(c1[,c2])

  • 從左邊開始獲取
  • 也可以去除字符串前面的空格,格式爲LTRIM(n)
  • select ltrim(‘abcde’,’a’) from dual;//返回bcde

  • RTRIM(c1[,c2])

  • 從右邊開始獲取
  • 也可以去除字符串後面的空格
  • select rtrim(‘abcde’,’e’) from dual;//返回abcd

  • TRIM(c1)

  • 去除字符串前後的空格

替換函數:

  • REPLACE(char,s_string[,r_string])
  • 省略r_string用空格替換
    select replace(‘abcde’,’a’,’A’) from dual;//返回Abcde
    select replace(‘abcde’,’abcd’,’A’) from dual;//返回Ae

日期函數

系統時間
日期操作

系統時間:

  • SYSDATE
  • 默認格式:DD-MON-RR 日-月-年

日期操作:

  • ADD_MONTHS(date,i)
  • 該函數的作用是返回指定日期上添加的月份
  • 如果i是小數,則截取整數部分
  • 如果i是負數,相當於爲原日期減去月份
    select add_months(sysdate,3),add_months(sysdate,-1) from dual;

  • NEXT_DAY(date,char)

  • 如果char的值是‘星期一’,則返回date指定日期的下週一是哪天
    select next_day(sysdate,’星期一’) from dual;

  • LAST_DAY(date)

  • 返回日期所在月的最後一天
    select last_day(sysdate) from dual;

  • MONTHS_BETWEEN(date1,date2)

  • 表示兩個日期之間相隔的月份
    select months_between(‘20-5月-15’,’10-3月-15’) from dual;

  • EXTRACT(date FROM datetime)

  • //語法如下:
    EXTRACT (
    { YEAR | MONTH | DAY | HOUR | MINUTE | SECOND }
    | { TIMEZONE_HOUR | TIMEZONE_MINUTE }
    | { TIMEZONE_REGION | TIMEZONE_ABBR }
    FROM { date_value | interval_value } )
  • 用於從一個date或者interval類型中截取到特定的部分

select EXTRACT(year from sysdate),EXTRACT(month from sysdate),EXTRACT(day from sysdate) from dual;//返回年月日

selectEXTRACT(HOURfromtimestamp’2015101717:55:13’),EXTRACT(minute from timestamp ‘2015-10-17 17:55:13’),EXTRACT(second from timestamp ‘2015-10-17 17:55:13’) from dual;//返回時分秒

轉換函數

日期轉換成字符的函數
字符轉換成日期的函數
數字轉換成字符的函數
字符轉換成數字的函數

日期轉換成字符的函數 :

  • TO_CHAR(date[,fmt[,params]])
  • 參數說明:date,將要轉換的日期;fmt:轉換的格式;params:日期的語言
  • 默認格式:DD-MON-RR
  • fmt的格式可以如下定義:
轉換的格式 其含義
YY YYYY YEAR 兩位數的年;四位數的年;英文表示的年
MM MONTHS 月;英文表示的月
DD DAY 天;中文表示的星期幾
HH24 HH12 24小時制;12小時制
MI SS 分;秒

select to_char(sysdate, ‘YYYY-MM-DD HH24:MI:SS’) from dual;

字符轉換成日期的函數 :

  • TO_DATE(char[,fmt[,params]])
  • params:用於指定日期的語言
  • 注意:to_date()按照系統默認格式顯示日期
    select to_date(‘2015-05-22’,’YYYY-MM-DD’) from dual;

數字轉換成字符的函數 :

  • TO_CHAR(number[,fmt])
  • 9:顯示數字並忽略前面的0
  • 0:顯示數字,位數不足,用0補齊
  • . 或 D:顯示小數點
  • , 或 G:顯示千位符
  • $:美元符號
  • S:加正負號(前後都可以)
    select to_char(123456.789, ‘S$99,9999.999’) from dual;//返回+12,3456.789

字符轉換成數字的函數:

  • TO_NUMBER(char[,fmt])
  • fmt是轉換的格式,可以省略
    select to_number(‘1,000, 9999’) from dual;//返回1000

在查詢中使用函數

在查詢中使用字符函數
在查詢中使用數值函數
在查詢中使用日期函數

在查詢中使用字符函數

  • 在員工信息表查詢出員工的生日
    select substr(a.cardid,7,8) from ttuser a

  • 將部門號01全部替換成”信息技術”
    select replace(detno,’01’,’信息技術’) from ttuser

在查詢中使用數值函數

  • 將員工信息表中的年齡字段與10取餘數
    select mod(a.age,10) from ttuser a

在查詢中使用日期函數

  • 取得員工入職的年份
    select EXTRACT(year from regdate) from ttuser

  • 查詢出5月份入職的員工信息
    select * from ttuser where extract(month from regdate) = 5 ;

總結 :

函數名稱 語法(關鍵字)
數值函數 四捨五入:ROUND(n[,m])
取整:FLOOR(n)
絕對值:ABS(n)
取餘數:MOD(m,n)
平方根:SORT(n)
三角函數:SIN(n)、ASIN(n)等
字符函數 大小寫轉換:UPPER(char)、LOWER(char)
字符串連接:CONCAT(char1,char2)
獲取子字符串:SUBSTR(char,[m,[,n]])
獲取字符串長度:LENGTH(char)
日期函數 獲取當前時間函數SYSDATE
ADD_MONTHS(date,i)
LAST_DAY(date)
MONTHS_BETWEEN(date1,date2)
EXTRACT(date FROM datetime)
轉換函數 TO_CHAR(date[,fmt[,params]])
TO_CHAR(number[,fmt])
發佈了24 篇原創文章 · 獲贊 6 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章