Oracle - 分享一些常用函式
阿新 • • 發佈:2020-11-10
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")