F.1字元函數——返回字元值 (chr,concat,initcap,lower,lpad/rpad,nls_initcap,nls_lower,nls_upper,regexp_replace,regexp_substr,replace,trim/ltrim/rtrim,soundex,subst ...
F.1字元函數——返回字元值
(chr,concat,initcap,lower,lpad/rpad,nls_initcap,nls_lower,nls_upper,regexp_replace,regexp_substr,replace,trim/ltrim/rtrim,soundex,substr,translate,upper)
說明:可以sql和plsql中使用
CHR
語法: chr(x)
功能:給出整數X,返回對應的ASCII碼字元。CHR和ASCII是一對反函數。
SQL> select chr(54740) 別名1,chr(65) 別名2 from dual;
別名1 別名2
趙 A
--------------------------------------------------
CONCAT
語法: CONCAT(string1,string2)
功能:連接兩個字元串
SQL> select concat('010-','88888888')||'23' 連接 from dual;
連接
010-8888888823
--------------------------------------------------
INITCAP
語法:INITCAP(string)
功能:返回字元單詞首字母大寫,其餘小寫,單詞用空格和非字母字元分隔。
SQL> select initcap('smith hEllo') upp from dual;
UPP
Smith Hello
--------------------------------------------------
LOWER
語法:LOWER(string)
功能:所以字母小寫
SQL> select lower('AaBbCcDd') AaBbCcDd from dual;
AaBbCcDd
aabbccdd
--------------------------------------------------
LPAD/RPAD
語法:LPAD/RPAD(string1,x[,string2])
功能:在string1字元左邊或右邊粘貼數個string2字元,直到字元總位元組數達到x位元組。string2預設為空格。
如果string2的長度要比X字元少,就按照需要進行複製。如果string2多於X字元,則僅string2前面的X各字元被使用。如果string1長度大於x,則返回string1左端x個字元。
RPAD 在列的右邊粘貼字元
LPAD 在列的左邊粘貼字元
SQL> select lpad(rpad('gao',10,'*'),17,'*')from dual;
LPAD(RPAD('GAO',1
*******gao*******
不夠字元則用*來填滿
--------------------------------------------------
NLS_INITCAP
語法:NLS_INITCAP(string[,nlsparams])
功能:返回字元串每個單詞第一個字母大寫而單詞中的其他字母小寫的string,nlsparams
指定了不同於該會話預設值的不同排序序列。如果不指定參數,則功能和INITCAP相同。Nlsparams可以使用的形式是:‘NLS_SORT=sort’ 這裡sort制訂了一個語言排序序列。
--------------------------------------------------
NLS_LOWER
語法:NLS_LOWER(string[,nlsparams])
功能:返回字元串中的所有字母都是小寫形式的string。不是字母的字元不變。
Nlsparams參數的形式與用途和NLS_INITCAP中的nlsparams參數是相同的。如果nlsparams沒有被包含,那麼NLS_LOWER所作的處理和LOWER相同。
--------------------------------------------------
NLS_UPPER
語法:NLS_UPPER(string[,nlsparams])
功能:返回字元串中的所有字母都是大寫的形式的string。不是字母的字元不變。nlsparams參數的形式與用途和NLS_INITCAP中的相同。如果沒有設定參數,則NLS_UPPER功能和UPPER相同。
使用位置:過程性語句和SQL語句。
--------------------------------------------------
REGEXP_REPLACE
語法:REGEXP_REPLACE(str1,pattem[,str2[,pos[,occ[,par]]]])
功能:10g新增函數,擴展了REPLACE函數的功能,並且用於按照特定正則表達式的規則替換字元串。其中參數str1指定源字元表達式,pattem指定正則表達式,str2指定替換字元串,pos指定起始搜索位置,occ指定替換出現的第幾個字元串,par指定預設匹配操作的文本串。
select REGEXP_REPLACE(a,’(.)’,’\1’) a from count;
A r g e n t i n a
體會NVL為DECODE,只支持NVL()內不再有其它括弧()
select a,
instr(upper(a), 'NVL(', 1) a3,
instr(upper(a), ')',instr(upper(a), 'NVL(', 1),1) a4,
substr(a,instr(upper(a), 'NVL(', 1),instr(upper(a), ')',instr(upper(a), 'NVL(', 1),1)-instr(upper(a), 'NVL(', 1)+1) a41,
substr(a,instr(upper(a), 'NVL(', 1)+4,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)-instr(upper(a), 'NVL(', 1)-4) a5,
REGEXP_REPLACE(
substr(a,instr(upper(a), 'NVL(', 1)+4,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)-instr(upper(a), 'NVL(', 1)-4),
'(.*),(.*)','\2,\1'
) a6,
REGEXP_REPLACE(
substr(a,instr(upper(a), 'NVL(', 1)+4,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)-instr(upper(a), 'NVL(', 1)-4),
'(.*),(.*)','decode(\1,null,\2,'''',\2,\1)'
) a7,
substr(a,1,instr(upper(a), 'NVL(', 1)-1)||REGEXP_REPLACE(
substr(a,instr(upper(a), 'NVL(', 1)+4,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)-instr(upper(a), 'NVL(', 1)-4),
'(.*),(.*)','decode(\1,null,\2,'''',\2,\1)'
)||substr(a,instr(upper(a), ')',instr(upper(a), 'NVL(', 1), 1)+1) a8
from temp_liut a;
--------------------------------------------------
判斷是否是數字
regexp_replace(a, '\d+', '') is null
REGEXP_SUBSTR
語法:REGEXP_SUBSTR(str1,pattem [,pos[,occ[,par]]])
功能:10g新增函數,擴展了SUBSTR函數的功能,並且用於按照特定表達式的規則返回字元串的子串。其中參數str1指定源字元表達式,pattem指定規則表達式, pos指定起始搜索位置,occ指定替換出現的第幾個字元串,par指定預設匹配操作的文本串。
Select REGEXP_SUBSTR(‘http://www.oracle.com/products’,’http://([[:alnum:]]+\.?)’) a from dual;
a
http://www.oracle.com/
--------------------------------------------------
REPLACE
語法:REPLACE(string,search_str[,replace_str])
功能:把string中的所有的子字元串search_str用可選的replace_str替換,如果沒有指定replace_str,所有的string中的子字元串search_str都將被刪除。REPLACE是TRANSLATE所提供的功能的一個子集。
REPLACE('string','s1','s2')
string 希望被替換的字元或變數
s1 被替換的字元串
s2 要替換的字元串
SQL> select replace('he lohe you','he','i') from dual;
replace('he lohe you','he','i')
i loi you
--------------------------------------------------
TRIM/LTRIM/RTRIM
語法1:LTRIM/RTRIM(string1,[string2])
語法2:trim([string2] from string1)
語法1功能:中刪除從左/右邊算起出現在string1中的字元string2,string2如果是多個字元則逐個單字元比對刪除,tring2被預設設置為單個的空格。當遇到不在string2中的第一個字元,結果就被返回了;
語法2功能:刪除左右兩邊出現在string1中的字元string2,tring2必須為單字元,否則報錯。
select ltrim(rtrim(' gao qian jing ',' '),' ') from dual;
gao qian jing
select ltrim('abaaaabbbcda','ab') from dual;
cda
select trim('a' from 'abacda') from dual;
bacd
--------------------------------------------------
SOUNDEX
語法: SOUNDEX(string)
功能: 返回string的聲音表示形式.這對於比較兩個拼寫不同但是發音類似的單詞而言很有幫助,如果字元發音相同,則返回的結果會一致.
SOUNDEX 返回一個與給定的字元串讀音相同的字元串
SQL> create table table1(xm varchar(8));
SQL> insert into table1 values('weather');
SQL> insert into table1 values('wether');
SQL> insert into table1 values('gao');
SQL> select xm from table1 where soundex(xm)=soundex('weather');
XM
weather
wether
--------------------------------------------------
SUBSTR
語法: SUBSTR(string,a[,b])
功能:截取字元串,從第a個開始取b個字元,這個務必要註意,是字元。 vachar2最長4000個位元組,GBK編碼中一個中文字元占2個位元組,韓文字元占4個位元組,如果string是date或者number的數據類型,會自動轉化為varchar2。
SQL> select substr('13088888888',3,8) 截取字元串 from dual;
截取字元串
08888888
select SUBSTR(t.a,4),a from temp_liut t;
JAN-00 04-jan-00
--------------------------------------------------
TRANSLATE
語法: TRANSLATE(string,from_str,to_str)
功能: 將字元string按照from_str與to_str的對應規則進行處理,返回將所出現的from_str中的每個字元替換為to_str中的相應字元以後的string. TRANSLATE是REPLACE所提供的功能的一個超集.如果from_str比to_str長,那麼在from_str中而不在to_str中而外的字元將從string中被刪除,因為它們沒有相應的替換字元. to_str不能為空.Oracle把空字元串認為是NULL,並且如果TRANSLATE中的任何參數為NULL,那麼結果也是NULL.
Select TRANSLATE('2abc2234','01234abcde','99999XXXXX') tra from dual
9XXX9999
select replace(TRANSLATE('as中國fd1234','1234567890','0000000000'),'0') from dual;
查找字元串',01234,2342,2,'中逗號出現次數
select length(translate(',01234,2342,2,', 'a0123456789', ' ')) from dual;
判斷字元串是否是數字
replace(translate(a, '0123456789', '0'),'0') is null
regexp_replace(a, '\d+', '') is null
UPPER
語法: UPPER(string)
功能: 所有字母大寫.(不是字母的字元不變.如果string是CHAR數據類型的,那麼結果也是CHAR類型的.如果string是VARCHAR2類型的,那麼結果也是VARCHAR2類型的).
SQL> select upper('AaBbCcDd') upper from dual;
UPPER
AABBCCDD
--------------------------------------------------
F.2 字元函數——返回數字
(ascii,instr,instrb,length,lengthb,nls_sort)
說明:可以sql和plsql中使用
ASCII
語法: ASCII(string)
功能: 返回string字元串首字元的十進位表示ascii碼值。 CHR和ASCII是互為相反的函數.CHR得到給定字元編碼的響應字元. ASCII得到給定字元的字元編碼.
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;
A A ZERO SPACE
65 97 48 32
--------------------------------------------------
INSTR
語法: INSTR(str1, str2[,a,b])
功能: 得到在str1中包含str2的位置. a>0,str1時從左邊開始檢查的,開始的位置為a;a<0,那麼str1是從右邊開始進行掃描的,開始的位置為a。第b次出現的位置將被返回. a和b都預設設置為1,這將會返回在string1中第一次出現string2的位置.如果string2在a和b的規定下沒有找到,那麼返回0.位置的計算是相對於string1的開始位置的,不管a和b的取值是多少.
INSTR(C1,C2,I,J) 在一個字元串中搜索指定的字元,返回發現指定的字元的位置;
C1 被搜索的字元串
C2 希望搜索的字元串
I 搜索的開始位置,預設為1(如果為負數會從後向前搜索)
J 出現的位置,預設為1
SQL> select instr('oracle traning','ra',1,2) instring from dual;
INSTRING
9
--------------------------------------------------
INSTRB
語法: INSTRB(string1, string2[a,[b]])
功能: 和INSTR相同,只是操作的對參數字元使用的位置的是位元組.
--------------------------------------------------
LENGTH
語法: LENGTH(string)
功能: 返回字元串的長度,特別註意的,對於空的欄位,返回為空,而不是0。
SELECT LENGTH (' 130 ') 返回字元串長度 FROM DUAL;
返回字元串長度
5
--------------------------------------------------
LENGTHB
語法: LENGTHB(string)
功能: 返回以位元組為單位的string的長度.對於單位元組字元集LENGTHB和LENGTH是一樣的.
--------------------------------------------------
NLS_SORT
語法: NLS_SORT(string[,nlsparams])
功能: 得到用於排序string的字元串位元組.所有的數值都被轉換為位元組字元串,這樣在不同資料庫之間就保持了一致性. Nlsparams的作用和NLS_INITCAP中的相同.如果忽略參數,會話使用預設排序.
--------------------------------------------------
F.3 數學函數
(abs,acos,asin,atan,atan2,ceil,cos,cosh,exp,floor,ln,log,mod,power,round,sign,sin,sinh,sqrt,tan,tanh,trunc)
說明:數學函數的輸入和輸出都是數字型,並且多數函數精確到38位。函數cos\cosh\exp\ln\log\sin\sinh\sqrt\tan\tanh精確到36位,acos\asin\atan\atan2精確到30為。數學函數可以在sql語句和plsql塊中引用。
ABS
語法: ABS(x)
功能: 得到x的絕對值.
SQL> select abs(100),abs(-100) from dual;
ABS(100) ABS(-100)
100 100
--------------------------------------------------
ACOS
語法: ACOS(x)
功能: 返回x的反餘弦值. 輸入x應該從-1到1之間的數,結果在0到pi之間,輸出以弧度為單位.
SQL> select acos(-1) from dual;
ACOS(-1)
3.1415927
--------------------------------------------------
ASIN
語法: ASIN(x)
功能: 返回x的反正弦值. X的範圍應該是-1到1之間,返回的結果在-pi/2到pi/2之間,以弧度為單位.
SQL> select asin(0.5) from dual;
ASIN(0.5)
.52359878
--------------------------------------------------
ATAN
語法: ATAN(x)
功能: 計算x的反正切值.返回值在-pi/2到pi/2之間,單位是弧度.
SQL> select atan(1) from dual;
ATAN(1)
.78539816
--------------------------------------------------
ATAN2
語法: ATAN2(x,y)
功能: 返回x除以y的反正切值.結果在負的pi/2到正的pi/2之間,單位是弧度.
--------------------------------------------------
CEIL
語法: CEIL(x)
功能: 計算大於或等於x的最小整數值.
SQL> select ceil(3.1415927) from dual;
CEIL(3.1415927)
4
--------------------------------------------------
COS
語法: COS(x)
功能: 返回x的餘弦值. x的單位是弧度.
SQL> select cos(-3.1415927) from dual;
COS(-3.1415927)
-1
--------------------------------------------------
COSH
語法: COSH(x)
功能: 計算x的雙曲餘弦值.
SQL> select cosh(20) from dual;
COSH(20)
242582598
--------------------------------------------------
EXP
語法: EXP(x)
功能: 計算e的x次冪. e為自然對數,約等於2.71828.
SQL> select exp(2),exp(1) from dual;
EXP(2) EXP(1)
7.3890561 2.7182818
--------------------------------------------------
FLOOR
語法: FLOOR(x)
功能: 返回小於等於x的最大整數值.
SQL> SELECT FLOOR (2345.67), FLOOR (-2345.67) FROM dual;
FLOOR(2345.67) FLOOR (-2345.67)
2345 -2346
--------------------------------------------------
LN
語法: LN(x)
功能: 返回x的自然對數. x必須是正數,並且大於0
SQL> select ln(1),ln(2),ln(2.7182818) from dual;
LN(1) LN(2) LN(2.7182818)
0 .69314718 .99999999
--------------------------------------------------
LOG
語法: LOG(x,y)
功能: 計算以x為底的y的對數.底必須大於0而且不等於1, y為任意正數.
SQL> select log(2,1),log(2,4) from dual;
LOG(2,1) LOG(2,4)
0 2
--------------------------------------------------
MOD
語法: MOD(x,y)
功能: 返回x除以y的餘數.如果y是0,則返回x
SQL> select mod(10,3),mod(3,3),mod(2,3) from dual;
MOD(10,3) MOD(3,3) MOD(2,3)
1 0 2
--------------------------------------------------
POWER
語法: POWER(x,y)
功能: 計算x的y次冪.
POWER 返回n1的n2次方根
SQL> select power(2,10),power(3,3) from dual;
POWER(2,10) POWER(3,3)
1024 27
--------------------------------------------------
ROUND
語法: ROUND(x[,y])
功能: 四捨五入函數,y預設值為0,x保留整數;y>0,x保留小數點右邊y位;y<0,x保留小數點左邊 |y| 位;可以對時間進行round,效果是只保留年月日。
SELECT ROUND (55.655, 2), --55.66
ROUND (55.654, 2), --55.65
ROUND (45.654, -1), --50
ROUND (45.654, -2), --0
ROUND (55.654, -2) --100
FROM DUAL;
--------------------------------------------------
SIGN
語法: SIGN(x)
功能: 檢測x的正負.如果x<0返回-1.如果x=0返回0.如果x>0返回1.
SQL> select sign(123),sign(-100),sign(0) from dual;
SIGN(123) SIGN(-100) SIGN(0)
1 -1 0
常和decode 結合使用
--------------------------------------------------
SIN
語法:SIN(x)
功能:計算x的正弦值. X是一個以弧度表示的角度.
SQL> select sin(1.57079) from dual;
SIN(1.57079)
1
--------------------------------------------------
SINH
語法:SINH(x)
功能:返回x的雙曲正弦值.
SQL> select sin(20),sinh(20) from dual;
SIN(20) SINH(20)
.91294525 242582598
--------------------------------------------------
SQRT
語法: SQRT(x)
功能: 返回x的平方根. x必須是正數.
SQL> select sqrt(64),sqrt(10) from dual;
SQRT(64) SQRT(10)
8 3.1622777
--------------------------------------------------
TAN
語法: TAN(x)
功能: 計算x的正切值, x是一個以弧度位單位的角度.
SQL> select tan(20),tan(10) from dual;
TAN(20) TAN(10)
2.2371609 .64836083
--------------------------------------------------
TANH
語法: TANH(x)
功能: 計算x的雙曲正切值.
SQL> select tanh(20),tan(20) from dual;
TANH(20) TAN(20)
1 2.2371609
--------------------------------------------------
TRUNC
語法: TRUNC(x[,y])
功能: 截取數字函數,只舍不入函數, y預設值為0,x保留整數;y>0,x保留小數點右邊y位;y<0,x保留小數點左邊 |y| 位
SELECT TRUNC (55.655, 2), --55.65
TRUNC (55.654, 2), --55.65
TRUNC (45.654, -1), --40
TRUNC (45.654, -2), --0
TRUNC (55.654, -2) --0
FROM DUAL;
SELECT TRUNC (SYSDATE, 'DD'), --當天
TRUNC (SYSDATE, 'MM'), --本月第一天
TRUNC (SYSDATE, 'yyyy'), --本年第一天
TRUNC (SYSDATE, 'day'), --本周第一天
TRUNC (SYSDATE, 'q') --本季度第一天
FROM DUAL;
--------------------------------------------------
F.4 日期時間函數
(add_months,current_date,current_timestamp,dbtimesone,extract,from_tz,last_day,months_between,new_time,next_day,numtodsinternal,numtoyminternal,round,sys_extract_utc,sysdate,systimestamp,to_dsinternal,to_timestamp,to_timestamp_tz,to_yminternal,trunc,tz_offset)
說明:日期時間函數用於處理date和timestamp類型的數據,除了函數months_between返回數字外,其餘均返回date類型,Oracle以7位數字格式來存放日期數據,包括世紀、年、月、日、小時、分鐘、秒,並且預設日期顯式格式為“DD-MON-YY”。
ADD_MONTHS
語法:ADD_MONTHS(d,x)
功能:返回日期d加上x個月後的月份。x可以是任意整數。如果結果日期中的月份所包含的天數比d日期中的“日”分量要少。(即相加後的結果日期中的日分量信息已經超過該月的最後一天,例如,8月31日加上一個月之後得到9月31日,而9月只能有30天)返回結果月份的最後一天。
使用位置:過程性語言和SQL語句。
SQL> select to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm') from dual;
TO_CHA
200002
SQL> select to_char(add_months(to_date('199912','yyyymm'),-2),'yyyymm') from dual;
TO_CHA
199910
--------------------------------------------------
CURRENT_DATE
語法: CURRENT_DATE
功能:9i新增函數,返回當前會話時區所對應的日期時間。
select CURRENT_DATE from dual;
--------------------------------------------------
CURRENT_TIMESTAMP
語法:CURRENT_TIMESTAMP
功能:9i新增函數,返回當前會話時區所對應的日期時間。
select CURRENT_TIMESTAMP from dual;
--------------------------------------------------
DBTIMESONE
語法:DBTIMESONE
功能:9i新增函數,返回資料庫所在時區。
select DBTIMESONE from dual;
--------------------------------------------------
EXTRACT
語法: EXTRACT(s)
功能:9i新增函數,從日期時間值中取得所需要的特定數據
Select extract(year from sysdate) year from dual;
Yaer
2013
--------------------------------------------------
FROM_TZ
語法: FROM_TZ(s)
功能:9i新增函數,將特定時區的TIMESTAMP值轉換為TIMESTAMP WITH TIME ZONE值。
Select from_tz(timestamp ‘2013-03-28 08:00:00’,’3:00’);
--------------------------------------------------
LAST_DAY
語法:LAST_DAY(d)
功能:計算包含日期的d的月份最後一天的日期.這個函數可以用來計算當月中剩餘天數.
使用位置:過程性語言和SQL語句。
LAST_DAY
返回日期的最後一天
SQL> select to_char(sysdate,'yyyy.mm.dd') aa from dual;
aa
2004.05.09
SQL> select last_day(sysdate) from dual;
LAST_DAY(S
31-5月 -04
--------------------------------------------------
LOCALTIMESTAMP
語法:LOCALTIMESTAMP
功能:9i新增函數,返回當前會話時區的日期時間。
Select LOCALTIMESTAMP from dual;
--------------------------------------------------
MONTHS_BETWEEN
語法:MONTHS_BETWEEN(date1,date2)
功能:計算date1和date2之間相差的月數.如果date1<date2,則返回負數;如果date1,date2這兩個日期中日分量信息是相同的,或者這兩個日期都分別是所在月的最後一天,那麼返回的結果是一個整數,否則包括一個小數,小數為富餘天數除以31,Oracle以每月31天為準計算結果。
SQL> select months_between('19-12月-1999','19-3月-1999') mon_between from dual;
MON_BETWEEN
9
SQL>selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.dd')) mon_betw from dual;
MON_BETW
-60
--------------------------------------------------
NEW_TIME
語法:NEW_TIME(d,zone1,zone2)
功能:計算當時區zone1中的日期和時間是d時候,返回時區zone2中的日期和時間. zone1和zone2是字元串. 給出在this時區=other時區的日期和時間。
使用位置:過程性語言和SQL語句。
NEW_TIME (d, ‘tz1’, ‘tz2’)
d::一個有效的日期型變數
tz1 & tz2::下表中的任一時區
時區1 時區2 說明
AST ADT 大西洋標準時間
BST BDT 白令海標準時間
CST CDT 中部標準時間
EST EDT 東部標準時間
GMT 格林尼治標準時間
HST HDT 阿拉斯加—夏威夷標準時間
MST MDT 山區標準時間
NST 紐芬蘭標準時間
PST PDT 太平洋標準時間
YST YDT YUKON標準時間
SQL> select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time
2 (sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;
BJ_TIME LOS_ANGLES
2004.05.09 11:05:32 2004.05.09 18:05:32
--------------------------------------------------
NEXT_DAY
語法:NEXT_DAY(d,string)
功能: 給出日期d和星期string之後計算下一個星期的日期. String是星期幾;當前會話的語言指定了一周中的某一天.返回值的時間分量與d的時間分量是相同的. String的內容可以忽略大小寫.
使用位置:過程性語言和SQL語句。
NEXT_DAY(date,'day')
SQL> select next_day('18-5月-2001','星期五') next_day from dual;
NEXT_DAY
25-5月 -01
--------------------------------------------------
NUMTODSINTERNAL
語法:NUMTODSINTERNAL(n,char_expr)
功能:將數字n轉換為INTERNAL DAY TO SECOND格式, char_expr可以是DAY\HOUR\MINUTE或SECOND。
Select NUMTODSINTERNAL(1000,’minute’) from dual;
--------------------------------------------------
NUMTOYMINTERNAL
語法:NUMTOYMINTERNAL(n,char_expr)
功能:將數字n轉換為INTERVAL YEAR TO MONTH格式,char_expr可以是year或者month。
Select NUMTOYMINTERNAL(100,’MONTH’) from dual;
--------------------------------------------------
ROUND
語法:ROUND(d[,format])
功能:將日期d按照由format指定的格式進行四捨五入處理處理.如果沒有給format則使用預設設置`DD`.
使用位置:過程性語言和SQL語句。
Select round(sysdate,’MONTH’) from dual;
--------------------------------------------------
SYS_EXTRACT_UTC
語法:SYS_EXTRACT_UTC(date)
功能:返回特定時區時間所對應的格林威治時間。
Select SYS_EXTRACT_UTC(systimestamp) from dual;
--------------------------------------------------
SYSDATE
語法: SYSDATE
功能:取得當前的日期和時間,類型是DATE.它沒有參數.但在分散式SQL語句中使用時,SYSDATE返回本地資料庫的日期和時間.
使用位置:過程性語言和SQL語句。
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
--------------------------------------------------
SYSTIMESTAMP
語法:SYSTIMESTAMP
功能:9i新增函數,返回當前系統的日期時間及時區。
Select systimestamp from dual;
--------------------------------------------------
TO_DSINTERNAL
語法:TO_DSINTERNAL(char[,’nls_param’])
功能:9i新增函數,將符合特定日期和時間格式的字元串轉變為INTERVAL DAY TO SECOND類型。
Select TO_DSINTERNAL(’58:10:10’) from dual;
--------------------------------------------------
TO_TIMESTAMP
語法:TO_TIMESTAMP(char[fmt[,’nls_param’]])
功能:9i新增函數,將符合特定日期和時間格式的字元串轉變為TIMESTAMP類型。
select systimestamp from dual
1. 字元型轉成timestamp
Select TO_TIMESTAMP(’01-1月-03’) from dual;
select to_timestamp('01-10月-08 07.46.41.000000000 上午','dd-MON-yy hh:mi:ss.ff AM')
from dual;
2. timestamp轉成date型
select cast(TO_TIMESTAMP('2015-10-01 21:11:11.328', 'yyyy-mm-dd hh24:mi:ss.ff') as date)
from dual;
3. date型轉成timestamp
select cast(sysdate as timestamp) date_to_timestamp
from dual;
--------------------------------------------------
TO_TIMESTAMP_TZ
語法:TO_TIMESTAMP_TZ(char[fmt[,’nls_param’]])
功能:9i新增函數,將符合特定日期和時間格式的字元串轉變為TIMESTAMP WITH TIME ZONE類型。
Select TO_TIMESTAMP_TZ(’20130101’,’yyyymmdd’) from dual;
--------------------------------------------------
TO_YMINTERNAL
語法:TO_YMINTERNAL(char)
功能:9i新增函數,將符合特定日期和時間格式的字元串轉變為INTERVAL YEAR TO MONTH類型。
select TO_TIMESTAMP('2015-10-01 21:11:11.328', 'yyyy-mm-dd hh24:mi:ss.ff') -
TO_TIMESTAMP('2015-10-01 11:11:11.328', 'yyyy-mm-dd hh24:mi:ss.ff')
from dual;
--------------------------------------------------
TRUNC
語法:TRUNC(d,format)
功能:截斷日期時間數據,計算截尾到由format指定單位的日期d.預設參數同ROUNG.
使用位置:過程性語言和SQL語句。如果fmt='mi'表示保留分,截斷秒,如此類推。
SQL> select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh,
2 to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;
HH HHMM
2004.05.09 11:00:00 2004.05.09 11:17:00
--------------------------------------------------
TZ_OFFSET
語法:TO_OFFSET(time_zone_name||sessiontimezone||dbtimezone)
功能:9i新增函數,返回特定時區與UTC相比的時區偏移。
Select TO_OFFSET (’EST’) from dual;
--------------------------------------------------
F.5 轉換函數
(asciistr,bin_to_num,cast,chartorowid,compose,convert,decompose,hextoraw, INTERVAL,rawtonhex,rowidtochar,rowidtonchar,scn_to_timestamp,timestamp_to_scn,to_char,to_clob,to_date,to_lob,to_label,to_multi_byte,to_nchar,to_number,to_single_byte,translate...using,unistr)
說明:用於將數值從一種數據類型轉換為另一種數據類型。
ASCIISTR
語法:ASCIISTR(s)
功能:9i新增函數,將任意字元集的字元串轉變為資料庫字元集的ASCII字元串。
Select ASCIISTR (’中國’) 中 from dual;
中
\4E2D\56FD
--------------------------------------------------
BIN_TO_NUM
語法:BIN_TO_NUM(expr[,expr]…)
功能:9i新增函數,用於將位向量值轉變為實際的數字值。
Select BIN_TO_NUM(1,0,1,1,1) 中 from dual;
中
23
--------------------------------------------------
CAST
語法:CAST(expr AS type_name)
功能:用於將一個內置數據類型或集合類型轉變為另一個內置數據類型或集合類型。可以作用於長度為0的空欄位視圖建表格之用。
Select cast(SYSDATE AS VARCHAR2) 中 from dual;
Create table tb_dual nologging as Select cast(null as varchar2(1)) from dual;
--------------------------------------------------
CHARTOROWID
語法:CHARTOROWID(string)
功能: 將字元數據類型轉換為ROWID類型,把包含外部格式的ROWID的CHAR或VARCHAR2數值轉換為內部的二進位格式.參數string必須是包含外部格式的ROWID的18字元的字元串.oracle7和oracle8中的外部格式是不同的.CHARTOROWID是ROWIDTOCHAR的反函數.
使用位置:過程性語言和SQL語句。
SQL> select rowid,rowidtochar(rowid),ename from scott.emp;
ROWID ROWIDTOCHAR(ROWID) ENAME
AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH
AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN
AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD
AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES
--------------------------------------------------
COMPOSE
語法:COMPOSE(string)
功能:9i新增函數,用於將輸入字元串轉變為UNICODE字元串值。
Select COMPOSE(‘o’||unistr(‘\0308’)) 中 from dual;
中
?
--------------------------------------------------
CONVERT
語法:CONVERT(string,dest_set[,source_set])
功能:將字元串string從source_set所表示的字元集轉換為由dest_set所表示的字元集.如果source_set沒有被指定,它預設的被設置為資料庫的字元集.
使用位置:過程性語言和SQL語句。
SQL> select convert('中國','US7ASCII','WE8ISO8859P1') "conversion" from dual;
--------------------------------------------------
DECOMPOSE
語法:DECOMPOSE(string)
功能:9i新增函數,用於分解字元串並返回相應的UNICODE字元串。
Select COMPOSE(‘chateoux’) 中 from dual;
--------------------------------------------------
HEXTORAW
語法:HEXTORAW(string)
功能: 將string一個十六進位構成的字元串轉換為二進位RAW數值. String中的每兩個字元表示了結果RAW中的一個位元組..HEXTORAW和RAWTOHEX為相反的兩個函數.
使用位置:過程性語言和SQL語句。
Select HEXTORAW (‘AB56’) 中 from dual;
--------------------------------------------------
INTERVAL
語法:INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precision)][TO {YEAR | MONTH}]
功能:該數據類型常用來表示一段時間差, 註意時間差只精確到年和月. precision為年或月的精確域, 有效範圍是0到9, 預設值為2。
INTERVAL '123-2' YEAR(3) TO MONTH
表示: 123年2個月, "YEAR(3)" 表示年的精度為3, 可見"123"剛好為3為有效數值, 如果該處YEAR(n), n<3就會出錯, 註意預設是2.
INTERVAL '11:12:10.1234567' HOUR TO SECOND
表示:小時,秒
結果:+00 11:12:10.123457
INTERVAL '123' YEAR(3)
表示: 123年0個月
INTERVAL '300' MONTH(3)
表示: 300個月, 註意該處MONTH的精度是3啊.
INTERVAL '4' YEAR
表示: 4年, 同 INTERVAL '4-0' YEAR TO MONTH 是一樣的
INTERVAL '50' MONTH
表示: 50個月, 同 INTERVAL '4-2' YEAR TO MONTH 是一樣
INTERVAL '123' YEAR
表示: 該處表示有錯誤, 123精度是3了, 但系統預設是2, 所以該處應該寫成 INTERVAL '123' YEAR(3) 或"3"改成大於3小於等於9的數值都可以的
INTERVAL '5-3' YEAR TO MONTH + INTERVAL '20' MONTH =
INTERVAL '6-11' YEAR TO MONTH
表示: 5年3個月 + 20個月 = 6年11個月
RAWTONHEX
語法:RAWTONHEX(rawvalue)
功能:9i新增函數,將RAW類數值rawvalue轉換為一個相應的十六進位表示的字元串. rawvalue中的每個位元組都被轉換為一個雙位元組的字元串. RAWTOHEX和HEXTORAW是兩個相反的函數.
使用位置:過程性語言和SQL語句。
Select rawtonhex(‘7D’) from dual;
--------------------------------------------------
ROWIDTOCHAR
語法:ROWIDTOCHAR(rowid)
功能:9i新增函數,將ROWID類型的數值rowid轉換為varchar2的字元串表示,在oracle7和oracle8之間有些不一樣的地方. ROWIDTOCHAR和CHARTOROWID是兩個相反的函數.
使用位置:過程性語言和SQL語句。
--------------------------------------------------
ROWIDTONCHAR
語法:ROWIDTOCHAR(rowid)
功能:9i新增函數,將ROWID類型的數值rowid轉換為Nvarchar2的字元串表示,在oracle7和oracle8之間有些不一樣的地方. ROWIDTOCHAR和CHARTOROWID是兩個相反的函數.
使用位置:過程性語言和SQL語句。
--------------------------------------------------
SCN_TO_TIMESTAMP
語法:SCN_TO_TIMESTAMP(number)
功能:10g新增函數,根據輸入的scn值返回對應的大概日期時間,其中number用於指定scn值.
使用位置:過程性語言和SQL語句。
Select SCN_TO_TIMESTAMP(ora_rowscn) from emp;
--------------------------------------------------
TIMESTAMP_TO_SCN
語法:TIMESTAMP_TO_SCN(timestamp)
功能:10g新增函數,用於根據輸入的timestamp返回所對應的scn值,其中timestamp、用於指定日期時間。
使用位置:過程性語言和SQL語句。
Select TIMESTAMP_TO_SCN(order_date) from emp;
--------------------------------------------------
TO_CHAR
語法1:TO_CHAR(character)
功能1:用於將NCHAR,NVARCHAR2,CLOB,NCLOB數據轉變為資料庫字元集數據,當用於NCHAR,NVARCHAR2,NCLOB時字元用單引號括起來,前面加上n。
Select to_char(n’中國’) from dual;
語法2:TO_CHAR(d [,format[,nlsparams]])
功能2:將日期d轉換為一個VARCHAR2類型的字元串.format指定日期格式,.如果沒有給定format,使用的就是該會話的預設日期格式.nlsparams指定NLS參數. nlsparams的格式是:“NLS_DATE_LANGUAGE”
使用位置:過程性語言和SQL語句。
select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;
2004/05/09 21:14:41
語法3:TO_CHAR(labels[,format])
功能3:將MISLABEL的LABEL轉換為一個VARCHAR2類型的變數.
使用位置:在trusted資料庫的過程性語句和SQL語句。
語法4: TO_CHAR(num[,format[,nlsparams]])
功能4:將NUMBER類型的參數num轉換為一個VARCHAR2類型的變數.如果指定了format,那麼它會控制這個轉換處理.表5-5列除了可以使用的數字格式.如果沒有指定format,它會控制這個轉換過程.下麵列出了可以使用的數字格式.如果沒有指定format,那麼結果字元串將包含和num中有效位的個數相同的字元. nlsparams用來指定小數點和千分位分隔符和貨幣符號.可以使用的格式:`NLS_NUMERIC_CHARS=”dg”NLS_CURRENCY=”string”
d和g分別表示列小數點和千分位分隔符. String表示了貨幣的符號.例如,在美國小數點分隔符通常是一個句點(.),分組分隔符通常是一個逗號(,),而千分位符號通常是一個$.
使用位置:過程性語言和SQL語句。
SELECT TO_CHAR(TO_DATE('11-oct-2007'), 'fmDdthsp "of" Month, Year') FROM DUAL;
以上正確,需要註意的是不屬於轉換日期格式標識符需要使用雙引號,如上面的"of"
SELECT promo_name, TRIM(TO_CHAR(promo_end_date,'Day')) ||', '||
TRIM(TO_CHAR(promo_end_date,'Month')) ||' '||
TRIM(TO_CHAR(promo_end_date,'DD, YYYY')) AS last_day
FROM promotions;
等價於下麵,fm有trim的作用去掉多餘空格
SELECT promo_name,TO_CHAR(promo_end_date,'fmDay')||','||
TO_CHAR(promo_end_date,'fmMonth')||' '||
TO_CHAR(promo_end_date,'fmDD, YYYY') AS last_day
FROM promotions;
上述當中,Day\DAY\day等等轉換後都是帶空格的,而YYYY則不會。
--將number格式轉換為貨幣格式,前面均帶空格
select TO_CHAR(12345,'$99999D99') from dual;-- $12345.00
SELECT TO_CHAR(1890.55,'$00G000D00') FROM DUAL;-- $01,890.55
SELECT TO_CHAR(1890.55,'$99G999D99') FROM DUAL;-- $1,890.55
--------------------------------------------------
TO_CLOB
語法:TO_CLOB (char)
功能:9i新增函數,將字元串轉變為CLOB類型。Char參數使用NCHAR,NVARCHAR2,NCLOB類型,字元串需要單引號括起來,且在前面加上n.
Select TO_CLOB(n’中國’) from dual;
--------------------------------------------------
TO_DATE
語法:TO_DATE(String[,format[,nlsparams]])
功能:將符合特定日期格式的字元串轉變為date類型. format是一個日期格式字元串.當不指定format的時候,使用該會話的預設日期格式,需要特別註意的,預設格式並不適用'2015-03-03'這種形式。
Select to_date(‘20130101’,’yyyymmdd’) from dual;--正確
SELECT TO_DATE('01/JANUARY/2007') FROM DUAL;--正確,預設支持
SELECT TO_DATE('01-JANUARY-2007') FROM DUAL;--正確,預設支持
SELECT TO_DATE('2015-03-03') FROM DUAL;--錯誤,預設不支持
--------------------------------------------------
TO_LOB
語法:TO_LOB (long_column)
功能:9i新增函數,將LONG或LONG ROW列的數據轉變為相應的LOB類型。但需要註意的是,在單純的select語句中會報錯,如例子所示。
使用位置:過程性語言和SQL語句。
例子:to_lob轉化long
select VIEW_NAME,to_lob(text) text from user_views; --會報錯
create table temp_liutao nologging as select VIEW_NAME,to_lob(text) text from user_views --通過
--------------------------------------------------
TO_LABEL
語法:TO_LABEL(String[,format])
功能:將String轉換為一個MLSLABEL類型的變數. String可以是VARCHAR2或者CHAR類型的參數.如果指定了format,那麼它就會被用在轉換中.如果沒有指定format,那麼使用預設的轉換格式.
使用位置:過程性語言和SQL語句。
--------------------------------------------------
TO_MULTI_BYTE
語法:TO_MULTI_BYTE(String)
功能:計算所有單位元組字元都替位換位等價的多位元組字元的String.該函數只有當資料庫字元集同時包含多位元組和單位元組的字元的時候有效.否則, String不會進行任何處理. TO_MULTI_BYTE和TO_SINGLE_BYTE是相反的兩個函數.
使用位置:過程性語言和SQL語句。
SQL> select to_multi_byte('高') from dual;
TO
高
--------------------------------------------------
TO_NCHAR
語法1:TO_NCHAR(char)
功能1:將字元串由資料庫字元集轉變為民族字元集。
SQL> select TO_NCHAR ('高') from dual;
語法2:TO_NCHAR(date,[,fmt[,nls_param]])
功能2:將日期時間值轉變為民族字元集。
SQL> select TO_NCHAR (sysdate) from dual;
語法3:TO_NCHAR(number)
功能3:將數字值轉變為民族字元集。
SQL> select TO_NCHAR (10) from dual;
--------------------------------------------------
TO_NUMBER
語法: TO_NUMBER(String[,format[,nlsparams]])
功能:將CHAR或者VARCHAR2類型的String轉換為一個NUMBER類型的數值.如果指定了format,那麼String應該遵循相應的數字格式. Nlsparams的行為方式和TO_CHAR中的完全相同.TO_NUMBER和TO_CHAR是兩個相反的函數.
使用位置:過程性語言和SQL語句。
SQL> select to_number('1999') year from dual;
YEAR
1999
--------------------------------------------------
TO_SINGLE_BYTE
語法: TO_SINGLE_BYTE(String )
功能:計算String中所有多位元組字元都替換為等價的單位元組字元.該函數只有當資料庫字元集同時包含多位元組和單位元組的字元的時候有效.否則, String不會進行任何處理.
TO_MULTI_BYTE和TO_SINGLE_BYTE是相反的兩個函數.
使用位置:過程性語言和SQL語句。
Select TO_SINGLE_BYTE(‘a b c’) from dual;
--------------------------------------------------
TRANSLATE…USING
語法: TRANSLATE(str1 USING zfj)
功能:將字元串轉變為資料庫字元集(char_cs)或民族字元集(nchar_cs)
Select TRANSLATE(‘中國’ using nchar_cs) from dual;
--------------------------------------------------
UNISTR
語法: UNISTR(str1)
功能:9i新增函數,輸入字元串返回相應的UNICODE字元
Select UNISTR (‘\00D6’) from dual;
--------------------------------------------------
F.6 分組統計函數
(avg,corr,count,covar_pop,covar_samp,cume_dist,dense_rank,first,group_id,grouping,grouping_id,glb,last,listagg,lub,max,min,percent_rank,percentile_cont,percentile_disc,rank,stddev,stddev_pop,stddev_samp,sum,var_pop,var_samp,variance)
說明:分組函數也被稱為多行函數,它會根據輸入的多行數據返回一個結果。主要用於執行數據統計或彙總操作,並且分組函數只能出現在select語句選擇列表、order by子句和having子句中。註意分組函數不能直接在plsql中引用,只能在內嵌select語句中使用。
AVG
語法:AVG([DISTINCT|ALL]col)
功能:返回一列數據的平均值,預設使用是ALL修飾符,all表示對所有的值求平均值,distinct排重後再求平均值
使用位置:查詢列表和GROUP BY子句.
SQL> select avg(distinct sal) from gao.table3;
AVG(DISTINCTSAL)
3333.33
SQL> select avg(all sal) from gao.table3;
AVG(ALLSAL)
2592.59
--------------------------------------------------
CORR
語法:CORR([expr1,expr2)
功能:返回成對數值的相關係數,其數值使用表達式”covar_pop(expr1,expr2)/(stddev_pop(expr1)*stddev_pop(expr2))”
使用位置:查詢列表和GROUP BY子句.
SQL> select corr(list_,min_) from gao.table3;
--------------------------------------------------
COUNT
語法:COUNT(*|[DISTINCT|ALL] col)
功能:得到查詢中行的數目.如果使用了*獲得行的總數.如果在參數中傳遞的是選擇列表,那麼計算的是非空數值。我基於10G測試,有主鍵情況下,count(主鍵)最快,count(1)和count(*)調動主鍵統計,時間上一樣;無主鍵情況下count(索引列)最快,但需要註意count(列名)統計不包括null,count(常量)和count(*)包括null
Select count(distinct sal) from emp;
--------------------------------------------------
COVAR_POP
語法:COVAR_POP(expr1,expr2)
功能:返回成對數字的協方差,其數值使用表達式”(sum(expr1*expr2)-sum(expr1)*sum(expr2)/n)/n”
Select COVAR_POP(column1,column2) from emp;
--------------------------------------------------
COVAR_SAMP
語法:COVAR_SAMP(expr1,expr2)
功能:返回成對數字的協方差,其數值使用表達式”(sum(expr1*expr2)-sum(expr1)*sum(expr2)/n)/n-1”
Select COVAR_SAMP(column1,column2) from emp;
--------------------------------------------------
CUME_DIST
語法:CUME_DIST(expr1,expr2…) within group (order by expr1,expr2…)
功能:返回特定數值在一組行數據中的累積分佈比例。
Select CUME_DIST(2000) within group (order by sel) from emp;
--------------------------------------------------
DENSE_RANK
語法:DENSE_RANK(expr1,expr2…) within group (order by expr1,expr2…)
功能:返回特定數據在一組行數據中的等級。
Select DENSE_RANK (5000) within group (order by sel) from emp;
--------------------------------------------------
FIRST
語法:FIRST
功能:9i新增,不能單獨使用,必須與其他分組函數結合使用。通過使用該函數,可以取得排序等級的第一級,然後然後使用分組函數彙總該等級的數據。
Select min(sal) keep (dense_rank first order by comm desc) from emp;
--------------------------------------------------
GROUP_ID
語法:GROUP_ID
功能:9i新增,用於區分分組結果中的重覆行。
Select deptno,job,avg(sal),group_id() from emp group by deptno,rollup(deptno,job);
--------------------------------------------------
GROUPING
語法:GROUPING(expr)
功能:用於確定統計結果是否使用了特定的表達式,返回0則用到了表達式,1則未用。
例如:select corp_code,org_level,count(1),
grouping(corp_code),
grouping(org_level)
from tb_sys_organization
group by rollup(corp_code, org_level);
select case grouping(corp_code)
when 1 then 'all_corp' else corp_code end corp_code,
case grouping(org_level)
when 1 then 'all_org' else org_level end org_level,
count(1)
from tb_sys_organization
group by rollup(corp_code, org_level);
--------------------------------------------------
GROUPING_ID
語法:GROUPING_ID(expr1[,expr2]…)
功能:9i新增,用於返回對應於特定行的grouping位向量的值。
Select deptno,job,sum(sal),grouping_id(job,deptno) from emp group by rollup(deptno,jon)
--------------------------------------------------
GLB
語法:GLB ([DISTINCT|ALL]label)
功能:獲得由label界定的最大下界.函數僅用於trusted oracle.
使用位置:trusted資料庫的選擇列表和GROUP BY子句.
--------------------------------------------------
LAST
語法:LAST
功能:9i新增,不能單獨使用,必須與其他分組函數結合使用。通過使用該函數,可以取得排序等級的最後一級,然後使用分組函數彙總該等級的數據。
Select min(sal) keep (dense_rank last order by comm) from emp;
--------------------------------------------------
LISTAGG
語法:listagg
功能:列轉行
select listagg(o.rybs, ';') within group(order by o.rybs)
from gk_xszrr o
where rownum <= 100;
----------------------------------------------------
LUB
語法:LUB ([DISTINCT|ALL]label)
功能:獲得由label界定的最小上界.用於trusted oracle.資料庫.
使用位置:trusted資料庫的選擇列表和GROUP BY子句.過程性語言和SQL語句。
--------------------------------------------------
MAX
語法:MAX([DISTINCT|ALL]col)
功能:獲得選擇列表或表達式的最大值,ALL表示對所有的值求最大值,DISTINCT表示對不同的值求最大值,相同的只取一次
使用位置:僅用於查詢選擇和GROUP BY子句.
SQL> select max(distinct sal) from scott.emp;
MAX(DISTINCTSAL)
5000
--------------------------------------------------
MIN
語法:MIN([DISTINCT|ALL]col)
功能:獲得選擇列表或表達式的最小值,ALL表示對所有的值求最小值,DISTINCT表示對不同的值求最小值,相同的只取一次
使用位置:僅用於查詢選擇和GROUP BY子句.
SQL> select min(all sal) from gao.table3;
MIN(ALLSAL)
1111.11
--------------------------------------------------
PERCENT_RANK
語法:PERCENT_RANK(expr1,expr2…)WITHIN GROUP (ORDER BY expr1,expr2…)
功能:該函數用於返回特定數值在統計級別中所占的比例。
SQL> select percent_rank(3000) within group(order by sal) from emp;
--------------------------------------------------
PERCENTILE_CONT
語法:PERCENTILE_CONT(percent_expr)WITHIN GROUP (ORDER BY expr)
功能:9i新增,用於返回在統計級別中處於某個百分點的特定數值(按照連續分佈模型確定)。
SQL> select percentile_cont(.6) within group(order by sal) from emp;
--------------------------------------------------
PERCENTILE_DISC
語法:PERCENTILE_DISC(percent_expr)WITHIN GROUP (ORDER BY expr)
功能:9i新增,用於返回在統計級別中處於某個百分點的特定數值(按照離散分佈模型確定)。
SQL> select percentile_cont(.6) within group(order by sal) from emp;
--------------------------------------------------
RANK
語法:RANK(expr1,expr2…)WITHIN GROUP (ORDER BY expr1,expr2…)
功能:該函數用於返回特定數值中所占據的等級。
SQL> select rank(3000) within group(order by sal) from emp;
--------------------------------------------------
STDDEV
語法:STDDEV([DISTINCT|ALL]col)
功能:獲得選擇列表的標準差.標準差為方差(VARIANCE)的平方根, ALL表示對所有的值求標準差,DISTINCT表示只對不同的值求標準差.
使用位置:僅用於查詢選擇和GROUP BY子句.
SQL> select stddev(sal) from scott.emp;
STDDEV(SAL)
1182.5032
SQL> select stddev(distinct sal) from scott.emp;
STDDEV(DISTINCTSAL)
1229.951
--------------------------------------------------
STDDEV_POP
語法:STDDEV_POP(col)
功能:返回統計標準差,其數值是統計方差的平方根.
使用位置:僅用於查詢選擇和GROUP BY子句.
SQL> select stddev_pop(sal) from scott.emp;
--------------------------------------------------
STDDEV_SAMP
語法:STDDEV_SAMP(col)
功能:返回采樣標準差,其數值是採樣方差的平方根.
SQL> select stddev_samp(sal) from scott.emp;
--------------------------------------------------
SUM
語法:SUM([DISTINCT|ALL]col)
功能:返回選擇的數值和總和
使用位置:僅用於查詢選擇和GROUP BY子句.
Select sum(sal) from emp;
----------------------------