久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Oracle單行函數(shù)和多行函數(shù)實(shí)例

 jyhjun 2013-10-09

單行函數(shù)和多行函數(shù)示意圖:

  單行函數(shù)分為五種類(lèi)型:字符函數(shù)、數(shù)值函數(shù)、日期函數(shù)、轉(zhuǎn)換函數(shù),、通用函數(shù)

  單行函數(shù):

--大小寫(xiě)控制函數(shù)
select lower('Hello World') 轉(zhuǎn)小寫(xiě), upper('Hello World') 轉(zhuǎn)大寫(xiě) from dual;
--initcap: 首字母大寫(xiě)
select initcap('hello world') 首字符大寫(xiě) from dual;

--字符控制函數(shù)
-- concat: 字符連接函數(shù), 等同于  ||
select concat('Hello',' World') from dual;
--substr:求母串中的某個(gè)子串
select substr('Hello World',3) from dual;
select substr('Hello World',3,4) from dual;
--length和lengthb: 字符數(shù)和字節(jié)數(shù)
select length('China') 字符數(shù), lengthb('China') 字節(jié)數(shù)  from dual;
--instr:在母串中,查找子串的位置
select instr('Hello World','ll') from dual;
--lpad,rpad: 左右填充,將abcd用*填充到10位
select lpad('abcd',10,'*') 左填充, rpad('abcd',10,'*') 右填充 from dual;
--trim: 去掉字符串前后指定的字符
select trim('H' from 'Hello WorldH') from dual;
--replace:字符串替換函數(shù)
select replace('Hello Wordl','l','*') from dual;

--數(shù)字函數(shù)
select round(45.926,2) 四舍五入, trunc(45.926,2)  截?cái)?,mod(1600,300) 求于 from dual;
--ROUND函數(shù)
select round(45.923,0) 整數(shù)位, round(45.923,-1) 十位,round(45.923,-2) 百位 from dual;

--日期函數(shù)
--顯示當(dāng)前日期
select sysdate from dual;
--顯示時(shí)間部分
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
--顯示昨天,今天和明天,,加減數(shù)字仍未日期
select sysdate-1 昨天, sysdate 今天, sysdate+1 明天 from dual;
--兩個(gè)日期相減,結(jié)果為相差的天數(shù),,查詢員工信息,,顯示員工工齡。兩個(gè)日期不能相加
select empno,ename, sysdate-hiredate 天 from emp;
--查詢員工信息,,顯示員工工齡,分別按照天,,星期,月顯示
select empno,ename,sysdate-hiredate 天,(sysdate-hiredate)/7 星期, (sysdate-hiredate)/30 月 from emp;
--months_between:兩個(gè)日期相差的月數(shù)
select (sysdate-hiredate)/30 方式一, months_between(sysdate,hiredate) 方式二 from emp;
--add_months:在指定日期上加上若干個(gè)月
select add_months(sysdate,1)  下個(gè)月, add_months(sysdate,123) "123個(gè)月后" from dual
--last_day: 某個(gè)日期當(dāng)月的最后一天
select last_day(sysdate) from dual;
--next_day:下周六
select next_day(sysdate,'星期五') from dual;
--對(duì)日期進(jìn)行四舍五入
select round(sysdate,'MONTH')  月,round(sysdate,'YEAR') from dual; 
--對(duì)日期進(jìn)行截?cái)?br>select trunc(sysdate,'MONTH')  月,trunc(sysdate,'YEAR') from dual;
--日期格式
select * from emp where hiredate=to_date('1982-01-23','yyyy-mm-dd');
-- 查詢當(dāng)前日期:顯示:  2011-09-17 15:12:15今天是星期六
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day') from dual;
--查詢員工信息,,顯示員工的編號(hào),,姓名,,月薪,要求有貨幣代碼(L),千位符(,),,小數(shù)點(diǎn)(.),
select empno,ename,to_char(sal,'L9,999.99') from emp;

--通用函數(shù)
--nvl(exp1,exp2):當(dāng)exp1為空時(shí),,返回exp2
--nvl2(exp1,exp2,exp3):當(dāng)exp1為空時(shí),返回exp3,;否則返回exp2
select ename,sal*12+nvl2(comm,comm,0) 年收入 from emp;
--NULLIF (expr1, expr2),如果expr1=expr2,返回null;否則,返回expr1
select nullif('abc','abc') from dual;
select nullif('abc','abcaa') from dual;
--COALESCE :找到參數(shù)列表中,,第一個(gè)不為空的值
select ename,comm,sal,COALESCE(comm,sal) from emp;
--給員工漲工資,根據(jù)職位漲,總裁漲1000,,經(jīng)理漲600 其他人員漲400
select ename,job,sal 漲前工資, case job when 'PRESIDENT' then sal+1000
                                         when 'MANAGER'   then sal+600
                                         else sal+400
                                 end 漲后工資
from emp;

select ename,job,sal 漲前工資, decode(job,'PRESIDENT',sal+1000,
                                            'MANAGER',sal+600,
                                             sal+400) 漲后工資
from emp;

  多行函數(shù)

  和單行函數(shù)相比,,oracle提供了豐富的基于組的,多行的函數(shù),。這些函數(shù)能在select或select的having子句中使用,,當(dāng)用于select子串時(shí)常常都和GROUP BY一起使用。多行函數(shù)分為接收多個(gè)輸入,,返回一個(gè)輸出,。

  組函數(shù):

--求員工的工資總和
select sum(sal) from emp;
--求個(gè)數(shù)
select count(*) from emp;
--求平均工資
select sum(sal)/count(*) 方式一, avg(sal) 方式二 from emp;
--關(guān)于空值:組函數(shù)會(huì)自動(dòng)濾空
select count(*), count(comm) from emp;
--max和min:求最高工資和最低工資
select max(sal) 最高工資,min(sal) 最低工資 from emp;
--分組數(shù)據(jù):求各個(gè)部門(mén)的平均工資
select deptno,avg(sal) from emp group by deptno;
--group by作用于多列: 按部門(mén),不同的工種,,統(tǒng)計(jì)平均工資
--group by作用于多列:先按照第一列分組,;如果相同,再按照第二列分組
select deptno,job,avg(sal) from emp group by deptno,job;
--:求部門(mén)的平均工資大于2000的部門(mén)
select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;
--group by的增強(qiáng)
select deptno,job,sum(sal) from emp group by rollup(deptno,job);
--不同的deptno空兩行/取消設(shè)置
break on deptno skip 2/break on null


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多