Oracle 函數大全

来源:http://www.cnblogs.com/bbliutao/archive/2017/11/08/7804263.html
-Advertisement-
Play Games

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;

----------------------------

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Table of Contents 1. 註意事項 2. 前期準備 3. 常用參數及示例 4. 常用語句示例 5. 互動式命令 6. 技巧 6.1. 不生成文件直接導入目標資料庫 6.2. 通過shell腳本自動導入 6.3. 如何導出數百張表 1 註意事項 檢查資料庫版本(用於決定導出時生成為哪個 ...
  • 第一章:數據類型數值類型(整數類型、浮點數類型)日期時間類型字元串和二進位類型其他數據類型 *數值類型包括整數型和浮點型。 整數型數據:只能存儲整數!最常用的整型數據類型是INT型。 浮點型數據:可以存儲整數和小數,但都帶有小數點。最常用的浮點型數據類型是FLOAT型。*日期時間類型: 日期型:用於 ...
  • 重設密碼的方法: 具體方法是: 1.先在安裝目錄找到my.ini配置文件,打開配置文件, 找到[mysqld]一行,在下麵添加skip-grant-tables後保存該文件 重新啟mysql動服務; 2.然後在mysql的cmdline執行mysql -u root mysql, mysql>use ...
  • 參考文檔: 本文簡單介紹memcached伺服器端的安裝配置,與php-memcache客戶端連接伺服器端的配置與操作。 一.簡介 1. 簡介 Memcached是一款開源、高性能、分散式記憶體對象緩存系統,可應用各種需要緩存的場景,其主要目的是通過降低對Database的訪問來加速web應用程式。 ...
  • 最近整理了一些資料庫常見的面試題,對自己也是個複習,希望對大家也有所幫助。 1.觸發器的作用? 觸發器是一類特殊的存儲過程,主要是通過事件來觸發而被執行的。它可以強化約束,來維護數據的完整性和一致性,可以跟蹤資料庫內的操作從而不允許未經許可的更新和變化。可以聯級運算。如,某表上的觸發器上包含對另一個 ...
  • 在執行一條HIVE語句的時候報了以下錯誤,重新檢查了所有步驟,重啟所有服務,發現沒有問題。 但發現一個有趣的事情 1,select sno,sname,sex,sage,sdept from student可以正常執行 2,sno,sname,sex,sage,sdept from student ...
  • innodb 的表,直接複製文件是無法使用的,會提示 table doesn’t exists ,在複製的時候,應將data目錄下的 ibdata1 文件一併複製過去,並且刪除 ib_logfile0 、ib_logfile1 文件 ...
  • 今天遇到一個非常奇怪的現象,查看ORACLE資料庫的一個文件,明明這個文件是存在的,但是使用ls -lrt 查看都顯示這個文件不存在。很是納悶! 後面發現在終端輸入文件名後並使用tab鍵時,發現文件後其實是有空格(不可見字元)。如下截圖所示: [oracle@ehvlnx02 ~]$ ls -lrt... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...