【Oracle】常用函數總結

一、前言

有那麼一段時間,確切的是有近一年的時間,沒有總結什麼。總覺的簡單的東西不想寫了,如果不深奧,不高級,不繫統就不寫,就這樣,近一年的時間我似乎沒有研究什麼新技術,但也確實實踐了很多之前沒有用過的東西,不過似乎不算深入,說來羞愧的不行。不過現在想想記錄下自己之前用過的哪怕一點點簡單的東西,也代表自己走過的痕跡了吧,當回憶的時候想想自己曾經記錄過,也是值得的吧。下面記錄幾個之前用過的簡單的Oracle函數吧

1.nvl()

nvl(a,b)代表如果a爲null則返回b,比如之前處理過一些歷史數據,當table1的某個字段爲空,我們處理下根據其他表的信息來更新這個字段不爲null,比如我要更新一個表的創建時間

update table1
set
    table1.CREATED_TIME= nvl(table1.CREATED_TIME,(select table2.CREATED_TIMEfrom table2 where resId= table1.id)) 
    ht.UPDATED_TIME = sysdate
where table1.CREATED_TIME is null

2.decode()

decode函數相當於if-then-default.

DECODE(value, if1, then1, if2,then2, if3,then3, . . . default)

Value 代表某個表的任何類型的任意列或一個通過計算所得的任何結果。如果value的值爲if1,Decode 函數的結果是then1;如果value等於if2,Decode函數結果是then2;可以給出多個if/then 配對。如果value結果不等於給出的任何配對時,Decode 結果就返回else 。

比如,我要查詢某個字段值,字段名稱爲居室,數據庫中存儲的數字,我要重新匹配爲我需要的值。 

select DECODE( t1.BED_ROOMS,0,'零居',null,'零居',1,'一居',2,'二居',3,'三居',4,'四居','五居及以上') AS bedRooms from table1 t1 

3.to_char()

(1)日期轉換,to_char(date,'格式')

select to_date('2018-12-14','yyyy-MM-dd') from dual;
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;

(2)處理數字:to_char(number,'格式')

select to_char(88877) from dual;
select to_char(1234567890,'099999999999999')  from dual;
select to_char(12345678,'999,999,999,999')  from dual;
select to_char(123456,'99.999')  from dual;
select to_char(1234567890,'999,999,999,999.9999')  from dual;
select TO_CHAR(123,'$99,999.9') from dual;
…………

 4sign()

比較大小函數

sign()函數根據某個值是0、正數還是負數,分別返回0、1、-1 ,例如: 

SELECT "SIGN"(10-8) FROM dual;

返回1

 

簡簡單單

……

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章