Oracle函數

Oracle單行函數

字符函數

接收字符輸入返回字符或者數值,dual 是僞表

1. 字符串的連接可以使用 concat 可以使用“||”建議使用“||”

select concat('hello', 'world') from dual;
select 'hello'||'world' from dual;

2. 字符串的截取,使用 substr,
第一個參數是源字符串,第二個參數是開始索引,第三個參數長度,
開始的索引使用 1 和 0 效果相同

select substr('hello', 1,3) from dual;
select substr('hello', 0,3) from dual;

3.獲取字符串的長度
select length('hello') from dual;

4. 字符串替換,第一個參數是源字符串,第二個參數被替換的字符串,第三個是替換字符串

select replace('hello', 'l','x')  from dual;

數值函數

--四捨五入: round(v1,p1) :v1 要處理的數字;p1:要保留的小數位數
select round(199.5622) from dual;--200
select round(199.5652,2) from dual;--199.57

--截斷:trunc
select trunc(199.5622) from dual;--199
select trunc(199.5652,2) from dual;--199.56

--求餘:mod
select mod(199.5622,10) from dual;--9.5622
select mod(199,19) from dual;--9

日期函數

--系統時間
select sysdate from dual;--oracle服務所在機器上的時間


--查詢員工入職的天數 : 現在的時間-入職時間
select empno,ename,hiredate,trunc(sysdate-hiredate) from  emp;

--查詢員工入職的週數
select empno,ename,hiredate,trunc((sysdate-hiredate)/7) from  emp;


--獲得兩個時間段中的月數: MONTHS_BETWEEN()
--計算員工的入職月數
select empno,ename,hiredate,round(months_between(sysdate,hiredate)) from  emp;

轉換函數

to_char: 轉成字符串
--數字轉成字符串
select 123 as "這個是數字數字",to_char(123) as "轉成字符串" from dual;

--日期轉成字符串
select 
       sysdate,
       to_char(sysdate,'yyyy') as "年份",
       to_char(sysdate,'yyyy-mm-dd') as "年月日",
       to_char(sysdate,'yyyy-mm-dd hh:mi:ss') as "到12時分秒",
       to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as "到24時分秒"
from dual;



--把字符串轉成數字
select '123',to_number('123') from dual;

--把字符串轉成日期
Select '2018-01-01',to_date('2018-01-01','yyyy-mm-dd') from dual;

空值處理 nvl

nvl(v1,p1) 

--處理空值:nvl(v1,p1) : 當v1等於空值的時候,用p1來代替
select empno,ename,sal ,sal*12 as 年薪,comm 獎金, sal*12+nvl(comm,0) as 年收入
from emp;


nullif(p1,p2)

條件表達式

--案例:當部門編號等於10,顯示java部門;當等於20的時候,顯示UI部門,其他都是Python部門
--sql99 的標準
select empno,ename,deptno ,
       case deptno 
         when 10 then 'java部門'
         when 20 then 'UI部門'
         else 'Python部門'
       end as "部門名稱"
from emp;

--oracle獨有
select empno ,ename,deptno,
       decode(deptno,
              10,'java部門',
              20,'UI部門',
              'Python部門') as "部門名稱"
from emp;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章