(一)字元函數
Upper
SELECT Upper ('abcde') FROM dual 結果:ABCDE
Lower
SELECT lower('ABCDE') FROM dual 結果:abcde
Initcap
SELECT Initcap ('AAA') FROM dual 結果:Aaa
SELECT Initcap ('aaa') FROM dual 結果:Aaa
Concat
SELECT Concat ('a', 'b') FROM dual 結果:ab
Select 'a' || 'b' from dual 結果:ab
Substr
Select substr('abcde',0,3) from dual 結果:abc
Select substr('abcde',-2,3) from dual 結果:de
第二個參數為字串的第幾位,預設從0開始。當為負數時,是從右側開始。第三個參數為要取得字串的總長度。
Length
Select length('abcde') from dual 結果:5
Replace
Select replace('abcde','a','A') from dual 結果:Abcde
Instr
Select instr('Hello World','W') from dual 結果:8
Select instr('Hello World','w') from dual 結果:0
如果在第一個參數中存在第二個參數,則返回第一個遇到的匹配參數的位置,該方法區分大小寫。
Lpad
select lpad('Smith',10,'*') from dual 結果:*****Smith
Rpad
select rpad('Smith',10,'*') from dual 結果:Smith*****
Trim
select trim(' Mr Smith ') from dual 結果:Mr Smith
(二)數值函數
Round
select round(412,-2) from dual; 結果:400
select round(412.713) from dual;結果:413
select round(412,2) from dual;結果:412
select round(412.713,2) from dual;結果:412.71
取整運算,第二個參數指定了取小數點後的幾位,如果是5則進一。
Mod
select Mod(198,2) from dual 結果:0
Trunc
select trunc(412.13,-2) from dual 結果:400
select trunc(412.13,2) from dual 結果:412.13
select trunc(412.13,1) from dual 結果:412.1
select trunc(412.53) from dual 結果:412
取整運算,第二個參數指定了取小數點後的幾位,不進位。
(三)日期函數
Months_between
select months_between(sysdate+35,sysdate) from dual
結果:1.16129032258065
用第一個參數的時間減去第二個參數的時間,得到月份的差。
Add_months
select add_months(sysdate,1) from dual
當前月份加了一個月
interval
select sysdate + interval '3 ' year from dual
當前日期加了三年
select sysdate + interval '3-2 ' year to month from dual
當前日期加了三年兩個月
select sysdate + interval '10 2:10 ' day to minute from dual
當前日期加了 十天兩小時十分鐘
Next_day
select next_day(sysdate,'星期一') from dual
選擇了下一個星期一的日期
Last_day
select last_day(sysdate) from dual
選擇了這個月的最後一天
(四)轉換函式
To_char
select to_char(sysdate,'yyyy-MM-dd') from dual; 結果:2010-10-30
To_number
select to_number('13')+to_number('14') from dual;結果:27
To_date
Select to_date('2012-1-1','yyyy-MM-dd') from dual;結果:2012-1-1
(五)通用函數
NVL
select nvl('string',0) from dual 結果:string
select nvl('',0) from dual 結果:0
NullIF
select nullif('abc','abc') from dual 結果:空
select nullif('abc','abcd') from dual 結果:’abc
NVL2
select nvl2('a','b','c') from dual 結果:b
select nvl2('','b','c') from dual 結果:c
如果第一個參數不為空白,則返回第二個參數;否則,返回第三個參數
Coalesce
select COALESCE('','','abc','') from dual 結果:abc
select COALESCE('','','','') from dual 結果:空
依次考察各個參數,如有非空則停止並返回該值。
Case運算式
select case 4
when 10 then
'財務部'
when 20 then
'研發部'
when 30 then
'銷售部'
else
'未知部門'
end 部門
from dual
結果:未知部門
Decode運算式
select decode(10, 10, '財務部', 20, '研發部', 30, '銷售部', '未知部門') 部門
from dual;結果:財務部
select decode(2,10,'財務部',decode(3,20,'研發部',decode(4,30,'銷售部','未知部門'))) from dual; 結果:未知部門
第一個參數是否等於第二個參數,如果等於,則返回第三個參數,否則返回第四個參數,可用於行轉列。