1. 程式人生 > 資料庫 >Oracle - 分享一些常用函式

Oracle - 分享一些常用函式

1. 判斷函式

--當欄位或欄位的運算的值等於值1時返回返回值1,當欄位或欄位的運算的值等於值二時返回返回值2...當條件都不滿足時返回預設值
decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,預設值)
--當欄位或欄位的運算的值等於值1時,該函式返回值2,否則返回值3​
decode(欄位或欄位的運算,值1,值2,值3)
case when 條件 and 條件 then 滿足時返回值 else 不滿足時返回值 end

2. 增加標識列

--加一個ID列
select sys_guid() as id... from 表...
--加一個列,資料順序為1,2,3,4... ...
--對 ROWNUM 只能使用 < 或 <=, 而是用 =, >, >= 都將不能返回任何資料.
select rownum as ron... from 表...

3. 非空判斷

--nvl 當FCPBH為null時返回0
SELECT NVL(ER_ZZRKDMX_BASE.FCPBH, 0) from ER_ZZRKDMX_BASE
--nvl2 當FCPBH不為null時返回1,為null返回0
SELECT NVL2(ER_ZZRKDMX_BASE.FCPBH, 1, 0) from ER_ZZRKDMX_BASE​

4. 字串函式

--將字串裡的字母全部轉化為“小寫”
LOWER('字串')​
--將字串裡的字母全部轉化為“大寫”
UPPER('字串')
--將字串裡的字母的“首字母”轉化為“大寫”
INITCAP('字串')
--將“Hello字串”與“Word字串”拼接到一起
concat('Hello','Word')
--擷取字串,下面擷取“HelloWord”從第“1”位開始“向右”擷取5位,輸出:Hello,如果將“1”變為負數就是從“右面開始”向“右”擷取幾位,“5”不寫則預設擷取到最後
SUBSTR('HelloWord', 1, 5)​
--TO_NUMBER 將字串轉化為number格式,9的個數為上限
TO_NUMBER('1234567.89', '9999999.99')
--round 保留幾位小數位 四捨五入
round(1.58548,1)

5. 日期函式

--系統時間精確到時分秒
SYSDATE
--計算“當前時間”與“時間欄位”相差的“天數”,輸出為number格式
SYSDATE-“時間欄位”
--計算“當前時間”與“時間欄位”相差的“月份”,輸出為number格式
MONTHS_BETWEEN(SYSDATE, “時間欄位”)
--將時間格式轉化為'YYYY-MM-dd'格式
TO_CHAR( SYSDATE,'YYYY-MM-dd')
--當前時間增加6個“月份”,輸出為日期格式
ADD_MONTHS(SYSDATE, 6)
--從今天開始往後的第一個週日是幾月幾號,根據系統日期語言改變第二個值是英文還是中文
NEXT_DAY(SYSDATE, '星期日')
--四捨五入,當前如果超過半個月則返回下個月初一號,沒超過則返回這個月初一號,第二個引數可以換成'year'等都可計算
ROUND(SYSDATE, 'Month')
--返回括號內所在時間月份的“第一天”,第二個引數可以換成'year'等都可計算
TRUNC(SYSDATE, 'Month')
--返回括號內所在時間月份的“最後一天”,返回為日期格式
LAST_DAY(SYSDATE)

6. 組函式

--最大值
MAX("sal")
--最小值
MIN("sal")
--求和
SUM("sal")