1. 程式人生 > >【Oracle】常用函式總結

【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

 

簡簡單單

……