--------------- 日期函式
select sysdate from dual
----員工入職 年限 日期相減 間隔的天數
select hiredate, (sysdate-hiredate)/365, floor((sysdate-hiredate)/365) from emp;
--- months_between() 日期間隔的 月數
select sysdate,months_between(sysdate,hiredate)/12,(sysdate-hiredate)/365 from emp
--- add_months()
select add_months('01-12月-2002',-1) from dual;
---- next_day() 表示下乙個日期 (那一天 週幾) [周天 - 週六]--[1-7]
select next_day(sysdate,1) from dual;
---last_day() 本月的最後一天
select last_day(sysdate) from dual;
----round ()
select round(sysdate,'month') from dual;
----round 預設支援 數字格式 不會自動轉化 日期 和 14 沒關係
select round(to_date('2000-02-15','yyyy-mm-dd'),'month') from dual;
select round(to_date('2000-02-16','yyyy-mm-dd'),'month') from dual;
---trunc()
select trunc(to_date('2019-11-20','yyyy-mm-dd'),'day') from dual;
--查詢部門是二十號部門,或者名字第三位是o 或者工資大於5000的員工的入職年限
select floor((sysdate-hiredate)/365) 入職年限,ename,empno from emp where deptno=20 or instr(ename,'o')=3 or sal>5000;
--查詢入職日期大於30 年的,並且獎金不是null,員工姓名和 job
select ename, job from emp where floor((sysdate-hiredate)/365)>35 and comm is not null
--查詢入職時間加上12年之後大於47年的員工
select * from emp where (floor((sysdate-hiredate)/365)+12)>47
----- 轉化函式
------ to_date 將字串 轉成date
select to_date('2019-11-20','yyyy-mm-dd') from dual; -- mm mm 都表示月份
select to_date('2019-5月-20','yyyy-mon-dd') from dual; --- 5月 mon month
select to_date('2019-05-20 11:23:13 ','yyyy-mm-dd hh:mi:ss') from dual; --12 小時制
select to_date('2019-05-20 13:23:13','yyyy-mm-dd hh24:mi:ss') from dual; --24 小時制
select to_date('2019-05-20 13:23:13','yyyy-mm-dd hh24:mi:ss ') from dual;
-- to_char date--char
select sysdate from dual;
select substr( to_char(sysdate,'yyyy-mm-dd hh-mi-ss'),1,10 )from dual
select to_char(sysdate,'yyyy"年"mm"月"dd"日"') from dual -- 格式中 「」 裡面的內容原樣輸出 不參與轉化
select to_char(sysdate,'yyyy"year"mm"month"dd"day"') from dual
select to_char(sysdate,'yyyy"year"mm"month"dd"day" ddspth dd') from dual
---2月份入職的人 ?
select * from emp where to_char(hiredate,'mm')='02';
---to_char number--char
select to_char(123.00 ,'999.999') from dual ---9 格式 數值不夠 補空格 小數點後 補 0
select to_char(-123.00,'000,000.000')from dual -- -0格式 數值不夠 補0 小數點後 補 0
-- to_char 數字 轉字串 每個預設加有 乙個空格
select to_char(123.00,'999.999') from dual where trim(to_char(123.00,'999.999'))= ' 123.000'
---員工工資
select to_char(123.00,'l99,999.000')from emp
select to_char(123.00,'$99,999.000')from emp
---- to_number 將字串 轉成 數字
select to_number('123.66' ,'000,000.000') from dual;
select to_number('123.66' ,'999,999.999') from dual;
----通用函式
----- nvl (1,2) 表示式1 為空 則返回表示式2 否則 返回表示式1
---總工資
select sal+comm 總工資 from emp;
select sal+nvl(comm,0) 總工資 from emp;
select nvl(null,10) from dual;
select nvl('1','10') from dual;
----- nvl2 (1,2,3) 表示式1 為空 返回表示式 3 否則是 2
select nvl2(comm,'不為空','為空') from emp
select nvl2(comm,sal+comm,sal) from emp
---nullif 判斷兩個值是否相等 相等 返回 空 如果不相等 返回表示式1 資料型別 得一致
select nullif('123','1231') ,nullif('1','2'),nullif('',null) from dual;
-- coalesce 返回第乙個不為空的值
select coalesce(1,2,3,3),coalesce(null,0,1) from dual;
----- if else ---
case 表示式
when 值1 then
when 值1 then
else
end
------ 等值判定
select case 4
when 1 then '壹'
when 2 then '貳'
when 3 then '叄'
else '瞎寫'
end 困 from dual;
select *from emp
--- clerk 辦事員 salesman 銷售 manager 經理 analyst 分析師 president 董事長
select ename,
case job
when 'clerk' then '辦事員'
when 'salesman' then '銷售'
when 'manager' then '經理'
when 'analyst' then '分析師'
when 'president' then '董事長'
end 具體工作,hiredate
from emp;
---- 不等值
select case
when sal<1000 then '屌絲'
when sal<2000 then '窮鬼'
when sal<3000 then '小康'
else '刷禮物'
end 困 from emp;
------ 工資 >2000*0.8 >3000 0.7 其他 不扣 實際月薪(稅後 包含獎金)
----- decode(表示式 , 值1 , 返回值1 ,值2 , 返回值2 .。。,返回值n(預設返回值) ) --只能做等值
select *from emp ---10 財務部 20 銷售部 30 技術部
select emp.* , decode(deptno,10,'財務部',20,'銷售部',30,'技術部') from emp
select emp.* , decode(deptno,10,'財務部',20,'銷售部','沒人管') from emp
ORACLE系統函式
1 資料定義語言觸發器 當建立 修改或刪除資料庫模式中的物件時,會激發資料定義語言觸發器。它們可以用來控制或監控ddl語句。表10 1列出了使用ddl觸發器的資料定義事件。這些觸發器都支援before和after事件觸發器,並在資料庫或模式級執行。通常,ddl觸發器用於監控資料庫中的重要事件。有時用...
Oracle系統函式
常用的系統函式總結如下 一 數字類 1.絕對值函式 abs n 2.向上取整函式 ceil n 3.向下取整函式 floor n 4.四捨五入函式 round n,m 注 四捨五入運算,如果m預設則四捨五入到整數字,m 0,四捨五入到小數點的前m位,m 0四捨五入到小數點的後m位 5.擷取數字函式 ...
ORACLE 常用系統函式
1.字元類 1.1 ascii c 函式 和chr i ascii 返回乙個字元的ascii碼,其中c表示乙個字元 chr 返回ascii碼值i 所對應的字元 如 select ascii a ascii a chr 65 chr 97 chr 98 from dual 執行結果為 97,65 a,...