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;