Oracle---函數(shù)

--單行函數(shù)
--字符函數(shù)
--lover 將字符全部轉(zhuǎn)為小寫

select ename,lower(ename) from emp;
select ename from emp where lower(ename) like '%s%';

--upper 將字符全部轉(zhuǎn)為大寫

select upper(ename) from emp;
select ename from emp where upper(ename) like '%s%';

--initcap--將字符首字母轉(zhuǎn)為大寫,其它字母變成小寫

select initcap(ename) from emp;
select 'Sql course',initcap('sql sourse') from dual;--dual偽表

--concat 連接兩個值 等同于 ||

select ename || '的工資是' || sal from emp;
select concat(concat(ename,'的工資是'),sal) from emp;

-- substr --截取字符串子串,默認下標1開始

select 'wuyuehong@qq.com',substr('wuyuehong@qq.com',3),
substr('wuyuehong@qq.com',10,3) from dual;

--length -- 取字符串長度

select ename,length(ename) from emp;

--1.寫一個查詢,用首字母大寫跳纳,其它字母小寫顯示雇員的 ename,顯
--示名字的長度,并給每列一個適當?shù)臉撕灦κ蓿瑮l件是滿足所有雇員名字
--的開始字母是J策菜、A 或 M 的雇員睦尽,并對查詢結(jié)果按雇員的ename升序
--排序脏答。

select initcap(ename) 首字母大寫, length(ename) 名字長度
from emp
where initcap(ename) like 'J%' or initcap(ename) like 'A%' or initcap(ename) like 'M%'
order by ename;

--字符處理函數(shù)
-- instr 參數(shù) 一是目標字符串碗暗,參數(shù)二子串抱虐,參數(shù)三開始索引昌阿,參數(shù)四 第幾次出現(xiàn)

select 'wuyuehong@qq.com',
instr('wuyuehong@qq.com','@',9),
instr('wuyuehong@qq.com','.',1,2) from dual;

--lpad--補充字符串(左)
--參數(shù)一 目標字符串,參數(shù)二 返回字符長度 參數(shù)三 填充字符串

select ename,lpad(ename,10,'aa'),length(ename) from emp;

--rpad--被充字符串(右)

select ename,rpad(ename,10,'aa'),rpad(ename,10,'aa'),length(ename) from emp;

--trim()--默認去字符串首尾空格
--去掉指定字符串,默認去掉首尾指定子串

select '    sql sourse   ',trim('    sql sourse   ') from dual;
select 'hsql sourseh',trim('h' from 'hsql sourseh') from dual;
select 'hsql sourseh',trim(both 'h' from 'hsql sourseh') from dual;
select 'hsql sourseh',trim(leading 'h' from 'hsql sourseh') from dual;
select 'hsql sourseh',trim(trailing 'h' from 'hsql sourseh') from dual;

--replace 字符替換函數(shù)
--REPLACE(s1,s2,s3)
--參數(shù)一 目標字符串 參數(shù)二目標字符子串 參數(shù)三替換字符串

select 'hsql sourseh',replace('hsql sourseh','hs','a') from dual;
select 'hsql sourseh',replace('hsql sourseh',' ','') from dual;

--1.查詢員工姓名中中包含大寫或小寫字母A的員工姓名。

--2.查詢部門編號為10或20宝泵,入職日期在81年5月1日之后好啰,
--并且姓名中包含大寫字母A的員工姓名,員工姓名長度(提示儿奶,要求使用INSTR函數(shù)框往,不能使用like進行判斷)

select * from emp where 
deptno in(10,20) and instr(ename,'A') != 0;
select ename,length(ename) from emp 
where instr(ename,'A') > 0 and hiredate > '01-5月-81' and deptno in(10,20);

--3.查詢每個職工的編號,姓名,工資
--要求將查詢到的數(shù)據(jù)按照一定的格式合并成一個字符串.
--前10位:編號,不足部分用填充,左對齊
--中間10位:姓名闯捎,不足部分用
填充,左對齊
--后10位:工資椰弊,不足部分用*填充,右對齊


--數(shù)值函數(shù)
--round 四舍五入 -- 參數(shù)一目標數(shù)值 參數(shù) 保留多少位

select 45.926,round(45.926)
,round(45.926,2),
round(45.926,0),
round(45.926,-1),
round(45.926,-2) from dual;

--trunc()截取-- 參數(shù)一目標數(shù)值 參數(shù) 保留多少位

select 45.926,trunc(45.926),
trunc(45.926,2),
trunc(45.926,0),
trunc(45.926,-1),
trunc(45.926,-2) from dual;

--mod 取余數(shù) ,取模

select 12,mod(12,5) from dual;--2

--日期函數(shù)
--sysdate返回當前系統(tǒng)日期

select sysdate from dual;

--日期的運算
--加減 后面數(shù)值默認是天

select sysdate+2 from dual;
select sysdate-180 from dual;

--1.查詢每個員工截止到現(xiàn)在一共入職多少天瓤鼻?
--2.當前日期為2015年秉版,指定日期格式為DD-MON-RR,指定日期為01-1月-01,該日期實際所代表的日期為茬祷?

--3.當前日期為2015年清焕,指定日期格式為DD-MON-RR,指定日期為01-1月-95,該日期實際所代表的日期為祭犯?

--4.當前日期為1998年秸妥,指定日期格式為DD-MON-RR,指定日期為01-1月-01,該日期實際所代表的日期為沃粗?

--5.當前日期為1998年粥惧,指定日期格式為DD-MON-RR,指定日期為01-1月-95,該日期實際所代表的日期為最盅?

--6.當前日期為2015年突雪,指定日期格式為DD-MON-YY,指定日期為01-1月-01,該日期實際所代表的日期為涡贱?

--7.當前日期為1998年咏删,指定日期格式為DD-MON-YY,指定日期為01-1月-95,該日期實際所代表的日期為问词?
--months_between 返回兩個日期類型數(shù)據(jù)之間間隔的自然月數(shù)

select months_between(hiredate,sysdate),
months_between(sysdate,hiredate) from emp;

--add_months 添加月數(shù)

select hiredate,add_months(hiredate,6) as 轉(zhuǎn)正日期 from emp;

--next_day

select next_day(sysdate,'星期二') from emp;

--last_day 返回指定日期當月最后一天的日期

select last_day('01-2月-81') from dual;

--round(date,fmt) 按照指 定格式四舍五入獲得日期

select hiredate,round(hiredate,'MM') from emp;--按月份四舍五入 找天 大于15月份加1
select hiredate,round(hiredate,'YY') from emp;--按照年四舍五入 找月 大于6年加1
select hiredate,round(hiredate,'DD') from emp;--按照日四舍五入

--trunc(data,fmt)截取日期 按照指定格式 截取獲得日期

select hiredate,trunc(hiredate,'MM') from emp;
select hiredate,trunc(hiredate,'YY') from emp;
select hiredate,trunc(hiredate,'DD') from emp;

--extract 抽取指定格式日期year month

select sysdate,extract(month from sysdate) from emp;

--1.查詢服務(wù)器當前時間

select sysdate from dual;

--2.查詢部門10,20的員工截止到2000年1月1日饵婆,工作了多少個月,
--入職的月份戏售。(提示:使用months_between,extract)

select hiredate as 入職日期,
extract(month from hiredate) as 入職月份,
months_between('01-1月-00',hiredate) as 工作月份
from emp where deptno in(10,20);

--3.如果員工試用期6個月侨核,查詢職位不是MANAGER的員工姓名,
--入職日期灌灾,轉(zhuǎn)正日期搓译,入職日期后的第一個星期一,入職當月的最后一天日期。
--(提示:使用add_months,next_day,last_day)

select ename as 員工姓名,
hiredate as 入職日期,
add_months(hiredate,6) 轉(zhuǎn)正日期,
next_day(hiredate,'星期一') as 入職日期后的第一個星期一,
last_day(hiredate)as 入職當月的最后一天日期
from emp where job not in('MANAGER');
select ename 員工姓名, hiredate 入職日期, add_months(hiredate,6) 轉(zhuǎn)正日期,next_day(hiredate,'星期一') 第一個星期一, last_day(hiredate) from emp where job <> 'MANAGER';--kaiqingli

--轉(zhuǎn)化函數(shù)
--隱式轉(zhuǎn)換

select sal,sal+12.0 from emp;
select sal,sal+'10' from emp;

--顯示轉(zhuǎn)換
--to_char 日期轉(zhuǎn)為字符類型

select hiredate,to_char(hiredate,'yy-mm-dd') from emp;
select hiredate,to_char(hiredate,'yyyy-mm-dd') from emp;
select hiredate,to_char(hiredate,'yyyy/mm/dd') from emp;
select hiredate,to_char(hiredate,'yyyy"年"mm"月"dd"日"') from emp;
select hiredate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from emp;
select hiredate,to_char(sysdate,'yyyy-mm-dd hh12:mi:ss') from emp;

--to_char 用于數(shù)值型

select 12343434.789 from dual;
select to_char('$12343434.789') from dual;

--to_number 字符內(nèi)型轉(zhuǎn)換為數(shù)值類型

select saL,sal+'10' from emp;--隱式轉(zhuǎn)換
select to_number('123.4')+3 from dual;--顯示轉(zhuǎn)換

--to_date 字符類型轉(zhuǎn)為日期類型

select to_date('2018-03-01','YY/MM/DD') from dual;

--1.顯示服務(wù)器系統(tǒng)當前時間锋喜,格式為2007-10-12 17:11:11(提示:使用to_char函數(shù))

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from emp;

--2.顯示ename些己、hiredate 和 雇員開始工作日是星期幾豌鸡,列標簽DAY(提示:使用to_char函數(shù))

select ename as 員工姓名,
hiredate as 入職日期,
to_char(hiredate,'day') as day
from emp;

--3.查詢員工姓名,工資段标,格式化的工資(¥999,999.99) (提示:使用to_char函數(shù))

select ename,sal,
to_char(sal,'')
from emp;

--4.把字符串2015-3月-18 13:13:13 轉(zhuǎn)換成日期格式涯冠,并計算和系統(tǒng)當前時間間隔多少天。 (提示:使用to_date函數(shù))

select to_date('2015-3月-18 13:13:13','YY-MM"月"-DD hh24:mi:ss'),
trunc(sysdate - to_date('2015-3月-18 13:13:13','YY-MM"月"-DD hh24:mi:ss'))
from dual;

--通用函數(shù)
--nvl 參數(shù)一目標對象 參數(shù)二替代值

select comm,nvl(comm,0) from emp;

-- nvl2 參數(shù)一目標對象 參數(shù)二 參數(shù)三代替值

select comm,nvl2(comm,'有獎金',0) from emp;
select comm,nvl2(comm,'有獎金','無') from emp;

--nullif 參數(shù)一與參數(shù)二進行比較如果相等返回空逼庞,否則返回參數(shù)一
--參數(shù)一與參數(shù)二類型必須一致

select nullif(1,'1') from dual;--數(shù)值類型不一致
select nullif(1,1) from dual;--null
select nullif(1,2) from dual;--1

--coalesce函數(shù)

select coalesce(123) from dual;--函數(shù)沒有足夠的參數(shù)
select coalesce(null,null,3,4,2) from dual;
select coalesce(null,null,comm,4,2) from emp;

--case --decode用來進行條件判斷輸出映射結(jié)果

select * from emp;
select * from dept;
select ename,hiredate,deptno,
    case deptno
        when 10 then '研發(fā)部'
        when 20 then '生產(chǎn)部'  
        when 30 then '財務(wù)部'
        else '無'
            end as 部門
    from emp;      

--decode

select ename,hiredate,deptno,
    decode(deptno,10,'研發(fā)部',20,'生產(chǎn)部',30,'財務(wù)部','無') as 部門
    from emp;    

--函數(shù)嵌套
--注意:函數(shù)的嵌套最里的那一層先執(zhí)行


select ename,nvl(to_char(mgr),'無經(jīng)理') from emp;

--1.計算2000年1月1日到現(xiàn)在有多少月蛇更,多少周(四舍五入)。

select months_between(sysdate,'01-1月-00') as 月,
round(months_between(sysdate,'01-1月-00')*30/7) as 周
from dual;

--2.查詢員工ENAME的第三個字母是A的員工的信息(使用2個函數(shù))赛糟。

select * from emp where ename like '__A%';

--3.使用trim函數(shù)將字符串‘hello’派任、‘ Hello ’、‘bllb’璧南、‘ hello
-- ’分別處理得到下列字符串ello掌逛、Hello、ll司倚、hello豆混。

select trim('h' from 'hello'),
    trim(' ' from ' Hello '),
    trim('b' from 'bllb'),
    trim(' ' from ' hello ')
from dual;

--4.將員工工資按如下格式顯示:123,234.00 RMB 。

select ename,sal,to_char(sal,'$99,99.99') from emp;

--5.查詢員工的姓名及其經(jīng)理編號动知,要求對于沒有經(jīng)理的顯示“No Manager”字符串皿伺。

select ename,mgr,nvl(to_char(mgr),'NO Manager') from emp;

--6.將員工的參加工作日期按如下格式顯示:月份/年份。

--7.在員工表中查詢出員工的工資拍柒,并計算應(yīng)交稅款:
--如果工資小于1000,稅率為0,如果工資大于等于1000并小于2000屈暗,
--稅率為10%拆讯,如果工資大于等于2000并小于3000,稅率為15%养叛,如果工資大于等于3000种呐,稅率為20%。

select sal,ename,
    case 
        when sal<1000 then 0
        when sal >= 1000 and sal < 2000 then (sal-1000)*0.1
            when sal >= 2000 and sal < 3000 then 1000*0.1 + (sal - 2000) * 0.15
            when sal >= 3000 then 1000*0.1 + 1000*0.15+(sal-3000)*0.2
                end as 稅收
                from emp;

--8.創(chuàng)建一個查詢顯示所有雇員的 ename和 sal弃甥。格式化sal為 15 個字符長度爽室,用 $ 左填充,列標簽 SALARY淆攻。

select * from emp;

分割線


博主為咯學(xué)編程:父母不同意學(xué)編程阔墩,現(xiàn)已斷絕關(guān)系;戀人不同意學(xué)編程,現(xiàn)已分手;親戚不同意學(xué)編程瓶珊,現(xiàn)已斷絕來往;老板不同意學(xué)編程,現(xiàn)已失業(yè)三十年啸箫。。伞芹。忘苛。蝉娜。。如果此博文有幫到你歡迎打賞扎唾,金額不限召川。。胸遇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荧呐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子狐榔,更是在濱河造成了極大的恐慌坛增,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薄腻,死亡現(xiàn)場離奇詭異收捣,居然都是意外死亡,警方通過查閱死者的電腦和手機庵楷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門罢艾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尽纽,你說我怎么就攤上這事咐蚯。” “怎么了弄贿?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵春锋,是天一觀的道長。 經(jīng)常有香客問我差凹,道長期奔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任危尿,我火速辦了婚禮呐萌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谊娇。我一直安慰自己肺孤,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布济欢。 她就那樣靜靜地躺著赠堵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪法褥。 梳的紋絲不亂的頭發(fā)上顾腊,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機與錄音挖胃,去河邊找鬼杂靶。 笑死梆惯,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的吗垮。 我是一名探鬼主播垛吗,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼烁登!你這毒婦竟也來了怯屉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤饵沧,失蹤者是張志新(化名)和其女友劉穎锨络,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狼牺,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡羡儿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了是钥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掠归。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖悄泥,靈堂內(nèi)的尸體忽然破棺而出虏冻,到底是詐尸還是另有隱情,我是刑警寧澤弹囚,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布厨相,位于F島的核電站,受9級特大地震影響鸥鹉,放射性物質(zhì)發(fā)生泄漏蛮穿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一宋舷、第九天 我趴在偏房一處隱蔽的房頂上張望绪撵。 院中可真熱鬧瓢姻,春花似錦祝蝠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至褥傍,卻和暖如春儡嘶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恍风。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工蹦狂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留誓篱,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓凯楔,卻偏偏與公主長得像窜骄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子摆屯,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容