oracle 常用函式

2021-08-10 19:40:45 字數 2579 閱讀 4002

oracle 常用函式

1.decode和case when

decode (a,'1','aaa','2','bbb','ccc')

就是if 欄位a = 1 then aaa

else if a=2 then bbb

else ccc

case when a=1 then 'aaa'

when a='2' then 'bbb'

else 'ccc' 

enddecode只能在oracle裡面用,mysql不行,sqlplus不行,case when是可以在別的資料庫裡面用的

decode只能做相等判斷,case when 可以做大於小於大於等於什麼的那種判斷,還有is null,is not null

case when 用在儲存過程裡面的時候end後面要加上case,就是 end case

2.concat 和|| 

concat只能連線兩個,||能連線好多

concat(a,b)

concat('a','b')

a||b||c||d

有case when在select裡面的時候不能直接用||或者是concat,要做乙個子查詢把結果先查出來再拼接

3.instr

instr(a,b,c,d)

a是要查的,b是查什麼,c是從第幾位開始查,d是查到第幾個的時候返回

4.replace

replace(x,old,new)

把x裡面的old換成new

5.substr

substr(x,start,length)

擷取x,從start開始擷取length位

6.length

length(x)

返回x的長度

7.ltrim,rtrim,trim

ltrim(a,'a')

去掉a欄位左邊的a,如果有連續的a就全都去掉

rtrim(a,'a')

去掉a欄位右邊的a,如果有連續的a就全都去掉

trim('a' from a)

去掉兩邊的a,如果有連續的a就全都去掉,一般用來去掉空格寫法是trim(a),a是欄位名

以上三個只能去除單個字元,比如想去掉欄位a裡面的字串abc是不可以的,但想去掉欄位a裡面連續的aaaaa是可以的

8.merge into

merge into abcd t1

using (select a,b,c  from abc where d = '1' ) t2

on (t1.a = t2.a)

when matched then 

update set t1.b = t2.b;

when not matchd then 

insert (a,b,c) values (t1.a,t1.b,t1.c);

解釋:on是兩個表的關聯條件,當滿足on裡面的條件時,執行update,不滿足執行insert,inset裡面的值要在using裡面的select中查出來,否則提示字元無效

9.upper和lower

更改大小寫

select upper('aaaaaa') from dual;

會顯示全是大寫的a

select lower('aaaaaa') from dual;

會顯示全是小寫的a

10.nvl

select nvl(a,'000') from abc

解釋:當欄位a裡面有值就輸出欄位a本身的值,沒有值時輸出000

11.union 和union all

select * from abc union select * from abcd;

解釋:將select * from abc 的結果和select * from abcd;的結果去重後拼接在一起輸出

select * from abc union all select * from abcd;

解釋:將select * from abc 的結果和select * from abcd;的結果直接拼接在一起輸出

12.wm_concat

列轉行函式

select wm_concat (d) from abcd;

解釋:將表abcd裡面的字段d裡面的所有值拼接在一起,成為乙個行的形式

13.找到包含最大值和最小值的記錄

select client_short,actual_bal

from (

select client_short,

actual_bal,

max(actual_bal) over() max_bal,

min(actual_bal) over() min_bal

from fsd.rb_acct) x

where actual_bal in (max_bal,min_bal)

14.rank() / dense_rank() over(partiiton by .. order by ..)

rank() 是跳躍排序,有兩個第一,接下來是第三

dense_rank()是連續排序,有兩個第一,接下來是第二

partition by是按哪個字段分組,order by 是按哪個字段排序

15.

Oracle常用函式

一 row number over 資料甲 1 select column name column name,data type,2 row number over partition by column name order by column name row num 3 from test c...

Oracle常用函式

數學函式 1.絕對值 o select abs 1 value from dual 2.取整 大 o select ceil 1.001 value from dual 3.取整 小 o select floor 1.001 value from dual 4.取整 擷取 o select trun...

oracle常用函式

1.concat c1,c2均為字串,函式將c2連線到c1的後面,如果c1為null,將返回c2.如果c2為null,則返回c1,如果c1 c2都為null,則返回null。他和操作符 返回的結果相同 select concat slobo svoboda username from dualuse...