1. 程式人生 > >Oracle 單行函數

Oracle 單行函數

nbsp 否則 ace ins str 信用卡 -- bstr ctu

  • 單行函數

round()    四舍五入

trunc()    截取

abs() 求絕對值

mod()    求余數

length()   長度

upper()   全部轉化位大寫

lower()    全部轉化為小寫

initcap()    全部轉化為首字母大寫

lpad()    從左邊補全

rpad()    從右邊補全

ltrim()    從左邊截取

rtrim()    從右邊截取

instr()    查詢指定字符串下標

substr()    獲取從指定下標開始的字符串

replace()    替換

translate()  轉換

(1). 數字 / 字符 / 字符串操作

【 返回 ‘hello‘‘的大寫字符串】

selectupper(‘hello’) from dual;

【 返回 ‘‘hello‘的首字母是大寫的字符串】

selectinitcap(‘hello’)from dual;

【返回‘tianqizhenhao‘ 該字符串的後7 個字符】

selectsubstr(‘tianqizhenhao’,-7,7) from dual;

(2).日期操作

1. 顯示41號部門員工 姓名, 進入公司的天數,年數,月份數,星期數【分別加上中文別名】

select e.first_name 姓名,

sysdate - e.hiredate天數,

months_between(sysdate,e.hiredate) 月數,

(months_between(sysdate,e.hiredate))/12年分數

froms_emp e

wheree.deptno = 41;

-- 2. 顯示當前時間

selectsysdate from dual ;

(3).轉換函數

【獲得當前年份,月份,日期 [ char]】

select

to_char(sysdate,‘yyyy‘) 年份,

to_char(sysdate,‘mm‘) 月份,

to_char(sysdate,‘dd‘) 日期

from dual

  • 將當前的時間 轉換成 字符串輸出【 即 date 類型 轉換成 char 類型】

select to_char(sysdate,‘yyyy/mm/dd hh24:mi:ss‘) from dual

【將‘2011-09-12 ‘ 轉換成 date 類型】

selectto_date(‘2011-09-12‘,‘yyyy-mm-dd‘) from dual

【 獲得字符串 ‘2011-09-12 ‘ 的月份】

select to_number(to_char( to_date(‘2010-09-18‘,‘yyyy-mm-dd‘) , ‘mm‘)) from dual

【獲得 8732034.56 用如下形式表示: 8,732,034.56】

select to_char( 8732034.56,‘9,999,999.99‘) from dual

【獲得 8732034.56 用如下形式表示: $8,732,034.56】

select to_char( 8732034.56,‘$9,999,999.99‘) from dual

decode(A,b,c,d,e,f,g,h)

如果A=b,輸出c;

如果A=d,輸出e;

如果A=f,輸出g;

如果b,d,f都不滿足A,輸出h.

【輸出顯示每個訂單編號及支付方式,支付方式要麽是現金,要麽是信用卡,否則就是未知數。】

select id,decode(payment_type,‘CASH‘,‘現金‘,‘CREDIT‘,‘信用卡‘,‘未知數‘ )

froms_ord;

【請把員工工資分為3等,超過2000員的為高等在1500到2000之間的為中等,低於1500的為低等】

select first_name 員工名

case

when salary<1500 then ‘低等‘

when salary>=1500 and salary<2000 then ‘中等‘

when salary>=2000 then ‘高等‘

end 工資等級

froms_emp;

註意:case後面是否出現列名,取決於when後面條件是否出現比較列

如果when後面已經出現列名,那case後面務必不能寫列名,

如果when後面是值,那麽必須在case後面指定列名,否則無法確定所給的值的真正含義

Oracle 單行函數