一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

SQL基本函數(shù)學(xué)習(xí)筆記(order by decode)

 aaie_ 2014-02-17
 這是我很久以前剛開始學(xué)習(xí)SQL時(shí)作的筆記,今天翻資料的時(shí)候被我翻了出來,覺得放在那里以后遺失掉了也是可惜,不如放到博客上,以后也可以看看,還可以幫助一些剛開始學(xué)習(xí)SQL的朋友入個(gè)門。不過都是按我自己的掌握程度來記的,估計(jì)也不太適合別人,就隨便看看吧。
 
 
一、to_char函數(shù)
 
Parameter    Explanation
YEAR           Year spelled out
YYYY           4 digits of year
YYY            3 digits of year
YY             2 digits of year
Y              1 digit of year
IYYY           4digits year based on the ISO standard
IYY            3 digits of ISO year
IY             2 digits of ISO year
I              1 digit of ISO year
Q              Quarter of year (1 .. 4)
MM             Month (01 ..12)
MON            Abbreviated name of month
MONTH          Name of month,
padded with blanks to length of 9 characters.
RM             Roman numeral month (I .. XII)
WW             Week of year (1-53) where 7 days 1 week (與星期幾無關(guān))
W              Week of month (1-5) where 7 days 1 week (與星期幾無關(guān))
IW             Week of year (1-52 or 1-53) based on the ISO standard.
               (周一到周日為一周,若1日為周五-周日,則為上年最后一周)
D              Day of week (周日1 .. 周六7)
DY             Abbreviated name of day.
DAY            Name of day
DD             Day of month (1-31)
DDTH           Day of month (1-31)
DDD            Day of year (1-366)
J              Julian day;the number of days since January 1, 4712 BC.
HH             Hour of day (1-12).
HH12           Hour of day (1-12).
HH24           Hour of day (0-23).
MI             Minute (0-59).
SS             Second (0-59).
SSSSS          Seconds past midnight (0-86399).
FF             Fractional seconds.
XXXXX          轉(zhuǎn)換為8進(jìn)制
 
to_char(1210.73, '9999.9')       would return '1210.7'
to_char(1210.73, '9,999.99')     would return '1,210.73'
to_char(1210.73, '$9,999.00')    would return '$1,210.73'
to_char(21, '000099')            would return '000021'
to_char(21, '999999')            would return '    21'
to_char(21, 'FM999999')          would return '21'
to_char(sysdate, 'FMYYY')        would return '8'         --FM表示去掉0或空格  
 
to_char(125, 'XXXXX')            would return '7D'
to_number('7D','XXXXX')          would return '125' 
 
 
另注:trunc與to_char的比較
 
trunc原意為截取數(shù)據(jù)小數(shù)部分,例如:
 
trunc(23.48429387)    返回23
trunc(23.48429387,3)  返回23.484
trunc(-1.443432)      返回-1
 
但trunc(date) 具有與to_char(date) 相似的功能,但有區(qū)別:
 
trunc(sysdate,'cc')   取當(dāng)世紀(jì)的第一天     to_char(sysdate,'cc')   取當(dāng)世紀(jì)數(shù)值
trunc(sysdate,'yyyy') 取當(dāng)年的第一天       to_char(sysdate,'yyyy') 取當(dāng)年數(shù)值
trunc(sysdate,'iyyy') 取上年的最后一天     to_char(sysdate,'iyyy') 取當(dāng)年數(shù)值
trunc(sysdate,'q')    取當(dāng)季第一天         to_char(sysdate,'iyyy') 取當(dāng)季數(shù)值
trunc(sysdate,'mm')   取當(dāng)月第一天         to_char(sysdate,'mm')   取當(dāng)月數(shù)值
trunc(sysdate,'ww')   取當(dāng)周第一天(周二)   to_char(sysdate,'ww')   取當(dāng)周數(shù)值(第幾周)
trunc(sysdate,'iw')   取當(dāng)周第一天(周一)   to_char(sysdate,'iw')   取當(dāng)周數(shù)值(第幾周)
 
總結(jié):trunc對(duì)日期的截取由后面參數(shù)決定位置后將之后所有數(shù)值為默認(rèn)初始值!
 
 
 
二、order by函數(shù)
 

-- 自動(dòng)將結(jié)果列表按字段順序?qū)?yīng)排序

order by 1 , 2 , 3

 

-- 可對(duì)字段 decode 后再排序,下例為將 2222 、 1111 排在前兩位,其他按順序排列

select a,b, c from t1

order by decode(a, '2222' , 1 , '1111' , 2 ,a)

個(gè)人注:order by decode相當(dāng)于轉(zhuǎn)換后再排序,所以結(jié)果值必須是相同類型,且可排序。如

order by decode(a, '2222' , 1 , '1111' , 2 , 3)  <=> order by decode(a, '2222' , 1.0 , '1111' , 2 .5, 3.0)  <=> order by decode(a, '2222' , 'a' , '1111' , 'b', 'c') 

 

-- 如遇到空值時(shí), order by 默認(rèn)將空值排在最下面,如要排在最上面,則:

order by nulls first

 
 
 
三、取整類函數(shù)整理
 

ceil : 取整 ( 大 )

    select ceil (- 1.001 ) value from dual    /- 1

floor :取整(?。?/SPAN>

    select floor(- 1.001 ) value from dual    /- 2

trunc :取整(截?。?

    select trunc(- 1.001 ) value from dual    /- 1

round :取整 ( 舍入 )

select round(- 1.001 ) value from dual    /- 1

 
應(yīng)用舉例:(根據(jù)時(shí)間算年齡)
trunc(months_between( sysdate ,birthday)/ 12 ) Age
 
 
 
四、LPAD與RPAD的用法:
 
比較:select LPAD('WhaT is tHis',5),LPAD('WhaT is tHis',25),LPAD('WhaT is tHis',25,'-') from dual;
            |WhaT|               WhaT is tHis| -------------WhaT is tHis
     select RPAD('WhaT is tHis',5),RPAD('WhaT is tHis',25),RPAD('WhaT is tHis',25,'-') from dual;
            |WhaT|  WhaT is tHis             | WhaT is tHis-------------
 
作用:作為調(diào)整格式的輸出,例:

 

with x as

( select 'aa' chr from dual

union all

select 'bb' chr from dual)

select level ,chr,lpad( ' ' ,( level - 1 )* 5 , '-' )||chr other from x connect by level <= 3

 

說明:若LPAD對(duì)空字符串操作無效,因此至少必須有' '空格符!

 
 
LPAD的實(shí)際應(yīng)用:

 

select distinct lpad(selltype, 2 , '0' ) from lccont;

 
由于系統(tǒng)中其他的selltype字段均為01、02等2位,但出現(xiàn)7,另有null值
所以使用 lpad(selltype,2,'0') 可以即保存null值又將7更新為07
 
 
 

五、rank() order by()和row_number() order by()的區(qū)別:

 

with t as (

select 1 a from dual

union all

select 2 a from dual

union all

select 1 a from dual

)

select a,rank() over( order by a) rank,row_number() over( order by a) num from t;

 

 

 

六、translate和replace的區(qū)別:

 

select translate('What is this','ait','-*%') from dual;---Wh-% *s %h*s

selectreplace('What is this','ait','-*%') from dual;-----What is this

selectreplace('What is this','hat','-*%') from dual;-----W-*% is this

 

translate的實(shí)際應(yīng)用:

select translate('12XXX5869XXXX','0123456789'||'12XXX5869XXXX','0123456789')from dual;

<取字符串中的所有數(shù)字>

 

 

 

七、sysdate與current_date的差別:

 

select sysdate,current_date from dual;

某些情況下current_date會(huì)比sysdate快一秒。

我們認(rèn)為current_date是將current_timestamp中毫秒四舍五入后的返回

雖然沒有找到文檔支持,但是想來應(yīng)該八九不離十。

 

 

 

八、一些有用的時(shí)間函數(shù):

 

select NEXT_DAY(sysdate,5) from dual;--下一個(gè)星期四(不算今天)

select NEXT_DAY(sysdate,'星期三') from dual;--下一個(gè)星期一(大小寫都可)

select LAST_DAY(sysdate) from dual;--當(dāng)月最后一天

 

 

 

九、一些有用的數(shù)字/字符函數(shù):

 

select GREATEST(a,b) Greatest from t2;----------求最大值

select LEAST(a,b) LEAST from t2;-------------求最小值

select NULLIF('a','b'),NULLIF('a','a') from dual;-------a=b則返回null;a<>b則返回a

select nvl(null,'a'),nvl('1','a') from dual;------------為null時(shí)返回a,不會(huì)null返回原值

select nvl2(null,'a','b'),nvl2('1','a','b') from dual;--為null時(shí)返回b,不為null返回a

selectCOALESCE(null,5,6,null,9) from dual;-----返回第一個(gè)非空值

select POWER(2.2,2.2) from dual;  ----a的b次方

 

 

 

十、一些有用的字符串操作函數(shù):

 

select CHR(95) from dual;-------------ASCII碼對(duì)應(yīng)字符

select ASCII('_') from dual;----------字符對(duì)應(yīng)ASCII碼

select concat('aa','bb') from dual;------------等同于||

select INITCAP('whaT is this') from dual;------首字母大寫,其余小寫

select TO_MULTI_BYTE('ABC abc 中華') from dual;----------半角變?nèi)?/EM>

select TO_SINGLE_BYTE('ABC abc中華') from dual;------全角變半角

select VSIZE('abc中華') from dual;-----返回字節(jié)數(shù)

select INSTR('CORPORATE FLOOR','OR',3,2) from dual;----從第3位開始查找第2個(gè)'OR'

 

 

 

十一、WMSYS.WM_CONCAT函數(shù)應(yīng)用:
 
此函數(shù)作用在于將某字段所有值列出到一個(gè)單元格中
 

select replace (WMSYS.WM_CONCAT(num), ',' , ' ' ) from t1;

 

行列轉(zhuǎn)換中最簡(jiǎn)單的一種方法。

 

 

 
十二、單元格內(nèi)文本換行的方法:
 
Tab鍵 chr(9)
換行符chr(10)
回車符chr(13)
空格符chr(32)

select 'a' ||chr( 9 )|| 'b' from dual;

select 'a' ||chr( 13 )|| 'b' from dual;

注:須在SQLPlus中查看結(jié)果,PL/SQL Developer中無法顯示換行

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产精品欧美一区二区三区不卡| 国产精品免费不卡视频| 欧美黑人在线精品极品| 日韩高清一区二区三区四区| 久久中文字人妻熟女小妇| 国产精品一区二区三区激情| 欧美尤物在线视频91| 日本三区不卡高清更新二区| 日韩精品一级一区二区| 这里只有九九热精品视频| 国产免费成人激情视频| 无套内射美女视频免费在线观看 | 有坂深雪中文字幕亚洲中文| 国产精品国产亚洲看不卡| 日韩黄色一级片免费收看| 日韩精品少妇人妻一区二区| 日韩精品一区二区三区射精| 字幕日本欧美一区二区| 九九视频通过这里有精品| 高清不卡视频在线观看| 欧美精品久久男人的天堂| 老富婆找帅哥按摩抠逼视频| 日本免费一级黄色录像| 欧美成人精品一区二区久久| 国产一区二区三区精品免费| 久久综合日韩精品免费观看| 成人欧美精品一区二区三区| 婷婷伊人综合中文字幕| 视频一区二区黄色线观看| 亚洲香艳网久久五月婷婷| 亚洲国产精品肉丝袜久久| 欧美韩国日本精品在线| 欧美自拍偷自拍亚洲精品| 都市激情小说在线一区二区三区| 国产又粗又长又大高潮视频| 中文字幕91在线观看| 欧美大粗爽一区二区三区| 午夜视频成人在线免费| 亚洲天堂国产精品久久精品| 亚洲一区在线观看蜜桃| 亚洲精品蜜桃在线观看|