字元函式、數字函式和日期函式

brj880719發表於2017-09-22

一、官檔

Book → SQL Language Reference → 5 Functions → Single-Row Functions

二、字元函式

大小寫轉換函式
函式 說明
UPPER 語法:UPPER(string)
說明:返回大寫的string.不是字母的字元不變.如果string是CHAR資料型別的,那麼結果也是CHAR型別的.如果string是VARCHAR2型別的,那麼結果也是VARCHAR2型別的.
例子:
  1. SELECT UPPER('AaBbCcDd') "AaBbCcDd"
  2.   FROM DUAL;
LOWER 語法:LOWER(string)
說明:返回小寫的string。不是字母的字元不變。
  • 如果string是CHAR資料型別的,那麼結果也是CHAR型別的。
  • 如果string是VARCHAR2型別的,那麼結果也是VARCHAR2型別的。
例子:
  1. SELECT LOWER('AaBbCcDd') "AaBbCcDd"
  2.   FROM DUAL;
INITCAP 語法:INITCAP(string)
說明:返回字串的每個單詞的第一個字母大寫而單詞中的其他字母小寫的string。單詞是用.空格或給字母數字字元進行分隔。不是字母的字元不變動。
例子:
  1. SELECT INITCAP('ryan') UPP
  2.   FROM DUAL;
字元處理函式
函式 說明
CONCAT 語法:CONCAT(string1,string2)
說明:返回string1,並且在後面連線string2。
例子:
  1. SELECT CONCAT('010-','88888888')||'轉23' 電話
  2.   FROM DUAL;
SUBSTR 語法:SUBSTR(string,a[,b])
說明:返回從字母為值a開始b個字元長的string的一個子字串.如果a是0,那麼它就被認為從第一個字元開始.如果是正數,返回字 符是從左邊向右邊進行計算的.如果b是負數,那麼返回的字元是從string的末尾開始從右向左進行計算的.如果b不存在,那麼它將預設的設定為整個字串.如果b小於1,那麼將返回NULL.如果a或b使用了浮點數,那麼該數值將在處理進行以前首先被卻為一個整數.
例子:
  1. SELECT SUBSTR('13088888888',3,8)
  2.   FROM DUAL;
LENGTH 語法:LENGTH(string)
說明:返回string的位元組單位的長度.CHAR數值是填充空格型別的,如果string由資料型別CHAR,它的結尾的空格都被計算到字串長度中間. 如果string是NULL,返回結果是NULL,而不是0.
例子:
  1. SELECT length('Ryan') FROM DUAL;
INSTR 語法:INSTR(string1, string2, [a,b])
說明:得到在string1中包含string2的位置. string1時從左邊開始檢查的,開始的位置為a,如果a是一個負數,那麼string1是從右邊開始進行掃描的.第b次出現的位置將被返回. a和b都預設設定為1,這將會返回在string1中第一次出現string2的位置.如果string2在a和b的規定下沒有找到,那麼返回0.位置的計算是相對於string1的開始位置的,不管a和b的取值是多少.
例子:
  1. SELECT INSTR('oracle traning','ra',1,2) instring
  2.   FROM DUAL;
LPAD | RPAD 語法:LPAD(string1,x[,string2]),RPAD(string1,x[,string2])
說明:返回在X字元長度的位置上插入一個string2中的字元的string1。如果string2的長度要比X字元少,就按照需要進行復制後,進行左|右填充。如果string2多於X字元,則僅string1前面的X各字元被使用。如果沒有指定string2,那麼使用空格進行左|右填充。X是使用顯示長度可以比字串的實際長度要長。
例子:
  1. SELECT RPAD('Ryan',10,'*'), LPAD('Ryan',10,'*')
  2.   FROM DUAL;
TRIM 語法:TRIM([[LEADING||TRAILING||BOTH] c2 FROM] c1)
說明:
  1. 如果沒有指定任何引數則oracle去除c1頭尾空格
  2. 如果指定了引數則會去掉c1頭部c2
  3. 如果指定了leading引數則會去掉c1頭部c2
  4. 如果指定了trailing引數則會去掉c1尾部c2
例子:
  1. 例一:
    1. SELECT TRIM(' What is tHis')
    2.   FROM DUAL;
  2. 例二:
    1. SELECT TRIM('W' FROM 'What is tHis w W')
    2.   FROM DUAL;
  3. 例三:
    1. SELECT TRIM(LEADING 'W' FROM 'What is tHis w W')
    2.   FROM DUAL;
  4. 例四:
    1. SELECT TRIM(TRAILING 'W' FROM 'What is tHis w W')
    2.   FROM DUAL;
REPLACE 語法:REPLACE(string,search_str[,replace_str])
說明:把string中的所有的子字串search_str用可選的replace_str替換,如果沒有指定replace_str,所有的string中的子字元 串search_str都將被刪除。REPLACE是TRANSLATE所提供的功能的一個子集。
例子:
  1. SELECT REPLACE('He love you','He','I')
  2.   FROM DUAL;

三、數字函式

函式 說明
ROUND 語法:ROUND(x[,y])
說明:返回舍入到小數點右邊Y位的X值。Y預設為0,這將X舍入為最接近的整數。如果Y是負數, 那麼舍入到小數點左邊相應的位上,Y必須為整數。
例句:
  1. SELECT ROUND(55.5), ROUND(-55.4)
  2.   FROM DUAL;
TRUNC 語法:TRUNC(x[,y])
說明:擷取值函式,Y預設為0,這樣X被擷取成一個整數。如果Y為負數,那麼擷取到小數點左邊相應位置
例句:
  1. SELECT TRUNC(124.1666,-2), TRUNC(124.16666,2)
  2.   FROM DUAL;
MOD 語法:MOD(被除數,除數)
說明:求餘函式,如果除數為0,則返回被除數。
例句:
  1. SELECT MOD(10,3),
  2.        MOD(3,3),
  3.        MOD(2,3)
  4.   FROM DUAL;

四、日期函式

函式 說明
SYSDATE 語法:SYSDATE
說明:返回當前日期和時間。
例句:
  1. SELECT SYSDATE FROM DUAL;
MONTHS_BETWEEN 語法:MONTHS_BETWEEN(f,s)
說明:返回兩個日期間的 月份
例句:
  1. SELECT MONTHS_BETWEEN(SYSDATE,TO_DATE('2017-11-12','YYYY-MM-DD'))
  2.   FROM DUAL;
ADD_MONTHS 語法:ADD_MONTHS(d,n)
說明:返回把月份數加到日期上的新日期
例句:
  1. SELECT ADD_MONTHS(SYSDATE,2)
  2.   FROM DUAL;
NEXT_DAY 語法:NEXT_DAY(d, day_of_week)
說明:返回由"day_of_week"命名的,在變數"d"指定的日期之後的第一個工作日的日期。引數"day_of_week"必須為該星期中的某一天。
例句:
  1. SELECT NEXT_DAY(SYSDATE,1)
  2.   FROM DUAL;
LAST_DAY 語法:LAST_DAY(日期)
說明:本月最後一天
例句:
  1. SELECT LAST_DAY(SYSDATE)
  2.   FROM DUAL;
ROUND 語法:ROUND(date,[fmt])
說明:按指定格式對日期進行四捨五入
例句:
  1. SELECT ROUND(SYSDATE,'YEAR')
  2.   FROM DUAL;
TRUNC 語法:TRUNC(date,[fmt])
說明:返回擷取時間部分後的DATE,如果有fmt部分的設定,則返回與該部分最近的日期
例句:
  1. SELECT TRUNC(SYSDATE,'YEAR')
  2.   FROM DUAL;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24851054/viewspace-2145352/,如需轉載,請註明出處,否則將追究法律責任。

相關文章