Oracle中常用函數(shù)(SQL)

Oracle函授有以下幾個分類:
數(shù)字函數(shù)逊抡、字符函數(shù)、日期函數(shù)拇勃、轉(zhuǎn)換函數(shù)孝凌、集合函數(shù)、分析函數(shù)

數(shù)字函數(shù):

函數(shù)名稱 作用
abs(n) 返回n的絕對值
ceil(n) 返回>=n的最小整數(shù)
floor(n) 返回>=n的最大整數(shù)
round(n瓣赂,[m]) 四舍五入運算,如果m缺省則四舍五入到整數(shù)位 m<0,四舍五入到小數(shù)點的前m位,m>0四舍五入到小數(shù)點的后m位
trunc(n,[m]) 截取數(shù)字,如果m缺省則將小數(shù)位截去 m<0,截取到小數(shù)點的前m位,m>0截取到小數(shù)點的后m位
select abs(-1.3),ceil(-1.3),ceil(1.3),
       floor(-2.6),floor(2.6),
       round(-888.689),round(-888.689,2),round(-889.689,-2),
       trunc(-888.689),trunc(-888.689,2),trunc(-888.689,-2)
       from dual

字符函數(shù):

lpad(s1,n,s2):在字符串S1的左端填充字符串S2寨躁,直到填充后的S1總長度為n牙勘,S2的缺省值為空格方面,如果S1的長度>n,則直接返回S1左端n個字符。
rpad(s1,n,s2):同理在右端

substr(s1,m,n):取得字串s1從m開始恭金,長度為n的子串,m>0表示從頭開始搜索颓屑,m<0表示從尾開始

select substr('天氣真好耿焊!',1,3),
       substr('我一點都不開心',3,5) 
       from dual
Paste_Image.png

ltrim(s1,set):從左端開始逐一取得字串s1左端包含的set中的任何字符罗侯, 當(dāng)遇到不是set中的字符是,則結(jié)束并返回剩余結(jié)果

SELECT ltrim('天氣真好','天') from dual
#氣真好

rtrim(s1,set):從右端開始逐一取得字串s1右端包含的set中的任何字符,當(dāng)遇到不是set中的字符是钩杰,則結(jié)束并返回剩余結(jié)果

SELECT rtrim('jhsony','ny') from dual
#jhso

trim(c FROM s2):從字串s2的頭部讲弄、尾部、或兩端截去字符c(c只能夠是一個字符)當(dāng)遇到不是set中的字符是避除,則結(jié)束并返回剩余結(jié)果

SELECT trim('j' from 'jhsony') from dual
#hsony

nvl(a,b) 函數(shù)nvl 判斷a表達式驹饺,如果a為空則返回b,通常用來判斷某個字段的值是否為空赏壹,用途十分廣泛的。
如果為空昔瞧,則傳回b的值。當(dāng)然我們一般是讓b=0凝化,你也可以賦其它的值1,2,3,4等等酬荞。

select * from ima_file
select nvl(ima03,1) from ima_file where ima01='E.CN.0228R'
Paste_Image.png

decode(字段,條件1,值1,條件2,值2)
針對同一字段有不同值的時候,可以用decode 來簡化SQL語句

日期函數(shù):
sysdate:返回系統(tǒng)當(dāng)前日期時間
systimestamp:返回系統(tǒng)當(dāng)前日期時間和時區(qū)
current_date:返回當(dāng)前回話時區(qū)所對應(yīng)的日期和時間
current_timestamp:返回當(dāng)前回話時區(qū)所對應(yīng)的日期時間
localtimestamp:返回當(dāng)前回話時區(qū)所對應(yīng)的日期時間
systimestamp:返回系統(tǒng)當(dāng)前日期時間和時區(qū)
sessiontimezone:返回當(dāng)前回話所在的時區(qū)
dbtimezone:返回資料庫所在的時區(qū)

查詢會用到的函數(shù):
INTERSECT:取兩個結(jié)果的交集
MINUS:獲取兩個結(jié)果集的差集枪向,返回在第一個結(jié)果集中存在但是第二個結(jié)果集中不存在的記錄
UNION ALL:獲取兩個結(jié)果的并集咧党,但不會去掉合并結(jié)果中重復(fù)的記錄
UNION:獲取兩個結(jié)果的并集,且去掉合并結(jié)果中重復(fù)的記錄
WITH 表名 as (SQL子查詢語句):可以將(SQL子查詢語句復(fù)用)
START WITH ... CONNECT BY PRIOR ... 實現(xiàn)Oracle層次查詢
EXISTS 相關(guān)子查詢是指需要應(yīng)用主查詢列表中的子查詢語句,需要通過謂詞EXISTS來實現(xiàn)深员,當(dāng)使用EXSISTS謂詞時,如果子查詢存在返回結(jié)果則條件返回TRUE,否則返回FALSE
coalesce(expr1[,expr2]...):返回運算式中第一個not null運算式的結(jié)果

select coalesce('','','','aa','bb') from dual
---------
aa

translate函數(shù)
語法:TRANSLATE(char, from, to)
用法:返回將出現(xiàn)在from中的每個字符替換為to中的相應(yīng)字符以后的字符串倦畅。
若from比to字符串長箱残,那么在from中比to中多出的字符將會被刪除。
三個參數(shù)中有一個是空被辑,返回值也將是空值敬惦。

select translate('abcdefga','abc','wo') 返回值 from dual;
--返回值
wodefgw

分析:該語句要將'abcdefga'中的'abc'轉(zhuǎn)換為'wo',
由于'abc'中'a'對應(yīng)'wo'中的'w',
故將'abcdefga'中的'a'全部轉(zhuǎn)換成'w';
而'abc'中'b'對應(yīng)'wo'中的'o',
故將'abcdefga'中的'b'全部轉(zhuǎn)換成'o';
'abc'中的'c'在'wo'中沒有與之對應(yīng)的字符,
故將'abcdefga'中的'c'全部刪除;
簡單說來俄删,就是將from中的字符轉(zhuǎn)換為to中與之位置對應(yīng)的字符,
若to中找不到與之對應(yīng)的字符畴椰,返回值中的該字符將會被刪除。
在實際的業(yè)務(wù)中抓艳,可以用來刪除一些異常數(shù)據(jù),
比如表a中的一個字段t_no表示電話號碼帚戳,
而電話號碼本身應(yīng)該是一個由數(shù)字組成的字符串玷或,
為了刪除那些含有非數(shù)字的異常數(shù)據(jù)儡首,
就用到了translate函數(shù):

delete from a where length(translate(trim(a.t_no),'0123456789' || a.t_no, '0123456789')) <> length(trim(a.t_no))

replace函數(shù)
語法:REPLACE(char, search_string,replacement_string)
用法:將char中的字符串search_string全部轉(zhuǎn)換為字符串replacement_string。
舉例

select REPLACE('fgsgswsgs', 'fk' ,'j') 返回值 from dual;
返回值
fgsgswsgs
select REPLACE('fgsgswsgs', 'sg' ,'eeerrrttt') 返回值 from dual;
返回值 
fgeeerrrtttsweeerrrttts

分析:第一個例子中由于'fgsgswsgs'中沒有與'fk'匹配的字符串偏友,
故返回值仍然是'fgsgswsgs'蔬胯;
第二個例子中將'fgsgswsgs'中的字符串'sg'全部轉(zhuǎn)換為'eeerrrttt'。
總結(jié):綜上所述位他,replace與translate都是替代函數(shù)氛濒,只不過replace針對的是字符串,而translate針對的是單個字符鹅髓。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市迈勋,隨后出現(xiàn)的幾起案子炬灭,更是在濱河造成了極大的恐慌,老刑警劉巖靡菇,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件重归,死亡現(xiàn)場離奇詭異,居然都是意外死亡厦凤,警方通過查閱死者的電腦和手機鼻吮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來较鼓,“玉大人椎木,你說我怎么就攤上這事〔├茫” “怎么了香椎?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長禽篱。 經(jīng)常有香客問我畜伐,道長,這世上最難降的妖魔是什么躺率? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任玛界,我火速辦了婚禮,結(jié)果婚禮上悼吱,老公的妹妹穿的比我還像新娘慎框。我一直安慰自己,他們只是感情好后添,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布笨枯。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪猎醇。 梳的紋絲不亂的頭發(fā)上窥突,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音硫嘶,去河邊找鬼阻问。 笑死,一個胖子當(dāng)著我的面吹牛沦疾,可吹牛的內(nèi)容都是我干的称近。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼哮塞,長吁一口氣:“原來是場噩夢啊……” “哼刨秆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起忆畅,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤衡未,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后家凯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缓醋,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年绊诲,在試婚紗的時候發(fā)現(xiàn)自己被綠了送粱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡掂之,死狀恐怖抗俄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情世舰,我是刑警寧澤动雹,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站跟压,受9級特大地震影響洽胶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜裆馒,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丐怯。 院中可真熱鬧喷好,春花似錦、人聲如沸读跷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至无切,卻和暖如春荡短,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哆键。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工掘托, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人籍嘹。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓闪盔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辱士。 傳聞我的和親對象是個殘疾皇子泪掀,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,485評論 0 3
  • 轉(zhuǎn)自公眾號‘java一日一條’ 1.字符串函數(shù) ascii(str) 返回字符串str的第一個字符的ascii值(...
    LOOK_LOOK閱讀 658評論 0 1
  • 1颂碘、字符串函數(shù) ascii(str) 返回字符串str的第一個字符的ascii值(str是空串時返回0) mysq...
    安易學(xué)車閱讀 243評論 0 2
  • 我越走越近异赫,咸腥的海風(fēng)迎面而來。 不知不覺中头岔,又走到了海邊塔拳。 拒絕了所有的邀約,就這樣一個人靜靜地在街頭走著切油。 坐...
    五月薔薇開閱讀 150評論 0 0
  • 作為一個腦洞時常開很大的人蝙斜,我常常會在夜里硬撐著困意胡思亂想,想著想著就過了睡覺時間澎胡,以至于度過了很多失眠的深夜孕荠。...
    咕冬夜閱讀 572評論 0 1