在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    SQL的基本函數(shù)

    【二】SQL的基本函數(shù)

    2.1 關(guān)系型數(shù)據(jù)庫(kù)SQL命令類別

    數(shù)據(jù)操縱語(yǔ)言:DML: select; insert; delete; update; merge.

    數(shù)據(jù)定義語(yǔ)言:DDL: create; alter; drop; truncate; rename; comment.

    事務(wù)控制語(yǔ)言:TCL: commit; rollback; savepoint.

    數(shù)據(jù)控制語(yǔ)言:DCL: grant; revoke.

    2.2 單行函數(shù)與多行函數(shù)

    單行函數(shù):指一行數(shù)據(jù)輸入,返回一個(gè)值得函數(shù)。所以查詢一個(gè)表時(shí),對(duì)選擇的每一行數(shù)據(jù)都會(huì)返回一個(gè)結(jié)果。

    SQL>select empno,lower(ename) from emp;

    多行函數(shù):指多行數(shù)據(jù)輸入,返回一個(gè)值得函數(shù)。所以對(duì)表的群組進(jìn)行操作,并且每組返回一個(gè)結(jié)果。(典型的是聚合函數(shù))

    SQL>select sum(sal) from emp;

    2.3 單行函數(shù)的幾種類型

    2.3.1 字符型函數(shù)

    lower(‘SQL Course’)—–>sql course 返回小寫(xiě)

    upper(‘sql course’)—–>SQL COURSE 返回大學(xué)

    initcap(‘SQL course’)—–> Sql Course 每個(gè)單字返回首字母大寫(xiě)

    concat(‘good’,’string’)—->good string 拼接 只能拼接2個(gè)字符串

    substr(‘String’,1,3)—->Str 從第1位開(kāi)始截取3位數(shù),

    演變:只有兩個(gè)參數(shù)

    substr(‘String’,3) 正數(shù)第三位起始,得到后面所有字符

    substr(‘String’,-2) 倒數(shù)第二位,起始,得到最后所有字符

    instr(‘t#i#m#r#a#n#’,’#’) —>找第一個(gè)#字符在那個(gè)絕對(duì)位置,得到的數(shù)值

    Instr參數(shù)經(jīng)常作為substr的第二個(gè)參數(shù)值

    演變:Instr參數(shù)可有四個(gè)之多

    如select instr(‘aunfukk’,’u’,-1,1) from dual; 倒數(shù)第一個(gè)u是哪個(gè)位置,結(jié)果返回5

    length(‘String’)—->6 長(zhǎng)度,得到的是數(shù)值

    length參數(shù)又經(jīng)常作為substr的第三個(gè)參數(shù)

    lpad(‘first’,10,’#39;)左填充

    rpad(676768,10,’*’)右填充

    replace(‘JACK and JUE’,’J’,’BL’)—->BLACK and BLUE

    trim(‘m’ from ‘mmtimranm’)—->timran 兩頭截,這里的‘m’是截取集,僅能有一個(gè)字符

    trim( ‘ timran ‘)—->timran 作用是兩頭去空字符

    處理字符串時(shí),利用字符型函數(shù)的嵌套組合是非常有效的:

    create table customers(cust_name varchar2(20));

    insert into customers values(‘Lex De Hann’);

    insert into customers values(‘Renske Ladwig’);

    insert into customers values(‘Jose Manuel Urman’);

    insert into customers values(‘Joson Malin’);

    select * from customers;

    CUST_NAME

    ——————–

    Lex De Hann

    Renske Ladwig

    Jose Manuel Urman

    Joson Malin

    一共四條記錄,客戶有兩個(gè)名的,也有三個(gè)名的,現(xiàn)在想列出僅有三個(gè)名的客戶,且第一個(gè)名字用*號(hào)略去

    答案之一:

    SELECT LPAD(SUBSTR(cust_name,INSTR(cust_name,’ ‘)),LENGTH(cust_name),’*’) “CUST NAME”

    FROM customers

    WHERE INSTR(cust_name,’ ‘,1,2)0;

    CUST NAME

    ————————————————————————————————————————

    *** De Hann

    **** Manuel Urman

    分析:

    先用INSTR(cust_name,’ ‘)找出第一個(gè)空格的位置,

    然后,SUBSTR(cust_name,INSTR(cust_name,’ ‘))從第一個(gè)空格開(kāi)始往后截取字符串到末尾,結(jié)果是第一個(gè)空格以后所有的字符,

    最后,LPAD(SUBSTR(cust_name,INSTR(cust_name,’ ‘)),LENGTH(cust_name),’*’)用LPAD左填充到cust_name原來(lái)的長(zhǎng)度,不足的部分用*填充,也就是將第一個(gè)空格前的位置,用*填充。

    where后過(guò)濾是否有三個(gè)名字,INSTR(cust_name, ‘ ‘,1,2)從第一個(gè)位置,從左往右,查找第二次出現(xiàn)的空格,如果返回非0值,則說(shuō)明有第二個(gè)空格,則有第三個(gè)名字。

    2.3.2 數(shù)值型函數(shù)

    round 對(duì)指定的值做四舍五入,round(p,s) s為正數(shù)時(shí),表示小數(shù)點(diǎn)后要保留的位數(shù),s也可以為負(fù)數(shù),但意義不大。

    round:按指定精度對(duì)十進(jìn)制數(shù)四舍五入,如:round(45.923, 1),結(jié)果,45.9

    round(45.923, 0),結(jié)果,46

    round(45.923, -1),結(jié)果,50

    trunc 對(duì)指定的值取整 trunc(p,s)

    trunc:按指定精度截?cái)嗍M(jìn)制數(shù),如:trunc(45.923, 1),結(jié)果,45.9

    trunc(45.923),結(jié)果,45

    trunc(45.923, -1),結(jié)果, 40

    mod 返回除法后的余數(shù)

    SQL> select mod(100,12) from dual;

    2.3.3 日期型函數(shù)

    因?yàn)槿掌谠趏racle里是以數(shù)字形式存儲(chǔ)的,所以可對(duì)它進(jìn)行加減運(yùn)算,計(jì)算是以天為單位。

    缺省格式:DD-MON-RR.

    可以表示日期范圍:(公元前)4712 至(公元)9999

    時(shí)間格式

    SQL> select to_date(‘2003-11-04 00:00:00′ ,’YYYY-MM-DD HH24:MI:SS’) FROM dual;

    SQL> select sysdate+2 from dual; 當(dāng)前時(shí)間+2day

    SQL> select sysdate+2/24 from dual; 當(dāng)前時(shí)間+2hour

    SQL> select sysdate+2/1440 from dual; 當(dāng)前時(shí)間+2分鐘

    SQL> select (sysdate-hiredate)/7 week from emp; 兩個(gè)date類型差,結(jié)果是以天為整數(shù)位的實(shí)數(shù)。

    ①M(fèi)ONTHS_BETWEEN 計(jì)算兩個(gè)日期之間的月數(shù)

    SQL>select months_between(‘1994-04-01′,’1992-04-01’) mm from dual;

    查找emp表中參加工作時(shí)間>30年的員工

    SQL>select * from emp where months_between(sysdate,hiredate)/12>32;

    很容易認(rèn)為單行函數(shù)返回的數(shù)據(jù)類型與函數(shù)類型一致,對(duì)于數(shù)值函數(shù)類型而言的確如此,但字符和日期函數(shù)可以返回任何數(shù)據(jù)類型的值。比如instr函數(shù)是字符型的,months_between函數(shù)是日期型的,但它們返回的都是數(shù)值。

    ②ADD_MONTHS 給日期增加月份

    SQL>select hiredate,add_months(hiredate,4) from emp;

    ③LAST_DAY 日期當(dāng)前月份的最后一天

    SQL>select hiredate,last_day(hiredate) from emp;

    ④NEXT_DAY NEXT_DAY的第2個(gè)參數(shù)可以是數(shù)字1-7,分別表示周日–周六(考點(diǎn))

    比如要取下一個(gè)星期六,則應(yīng)該是:

    SQL>select next_day(sysdate,7) FROM DUAL;

    ⑤ROUND(p,s),TRUNC(p,s)在日期中的應(yīng)用,如何舍入要看具體情況,s是MONTH按30天計(jì),應(yīng)該是15舍16入,s是YEAR則按6舍7入計(jì)算。

    SQL>SELECT empno, hiredate,round(hiredate,’MONTH’) AS round,trunc(hiredate,’MONTH’) AS trunc FROM emp;

    SQL>SELECT empno, hiredate, round(hiredate,’YEAR’) AS round,trunc(hiredate,’YEAR’) AS trunc FROM emp;

    2.3.4 幾個(gè)有用的函數(shù)和表達(dá)式

    1)DECODE函數(shù)和CASE表達(dá)式:

    實(shí)現(xiàn)sql語(yǔ)句中的條件判斷語(yǔ)句,具有類似高級(jí)語(yǔ)言中的if-then語(yǔ)句的功能。

    decode函數(shù)源自oracle, case表達(dá)式源自sql標(biāo)準(zhǔn),實(shí)現(xiàn)功能類似,decode語(yǔ)法更簡(jiǎn)單些。

    decode函數(shù)用法:

    SQL> SELECT job, sal,

    decode(job, ‘ANALYST’, SAL*1.1, ‘CLERK’, SAL*1.15,’MANAGER’, SAL*1.20, SAL) SALARY FROM emp

    decode函數(shù)的另幾種常見(jiàn)用法:

    SQL>select ename,job,decode(job,’MANAGER’,’中層干部’) leader from emp;

    SQL> select ename,job,comm,decode (comm,null,’nonsale’,’sale’) saleman from emp;

    注:?jiǎn)我涣刑幚?,共四個(gè)參數(shù):含義是:comm 如果為null就取’nonsale,否則取’sale’

    SQL> select sal,sign(sal-1500) from emp;

    SQL> select ename,decode (sign(sal-1500), 1, ‘NORMAL’,’LOW’) as “LEV” from emp;

    注:sign()函數(shù)根據(jù)某個(gè)值是0、正數(shù)還是負(fù)數(shù),分別返回0、1、-1,含義是:工資大于1500,返回1,真取’NORMAL’,假取’LOW’

    CASE表達(dá)式第一種用法:

    SQL> SELECT job, sal,

    case job when ‘ANALYST’ then SAL*1.10

    when ‘CLERK’ then SAL*1.15

    when ‘MANAGER’ then SAL*1.20

    else sal end SALARY

    FROM emp

    CASE表達(dá)式第二種用法:

    SQL> SELECT job, sal, case

    when job=’ANALYST’ then SAL*1.1

    when job=’CLERK’ then SAL*1.15

    when job=’MANAGER’ then SAL*1.20

    else sal end SALARY

    FROM emp

    以上三種寫(xiě)法結(jié)果都是一樣的

    CASE第二種語(yǔ)法比第一種語(yǔ)法增加了搜索功能。形式上第一種when后跟定值,而第二種還可以使用表達(dá)式和比較符。

    看一個(gè)例子

    SQL> SELECT ename,sal,case

    when sal>=3000 then ‘高級(jí)’

    when sal>=2000 then ‘中級(jí)’

    else ‘低級(jí)’ end 級(jí)別

    FROM emp

    再看一個(gè)例子:使用了復(fù)雜的表達(dá)式

    SQL> SELECT AVG(CASE

    WHEN sal BETWEEN 500 AND 1000 AND JOB=’CLERK’

    THEN sal ELSE null END) “CLERK_SAL”

    from emp;

    比較;

    SQL> select avg(sal) from emp where job=’CLERK’;

    2)DISTINCT(去重)限定詞的用法:

    distinct貌似多行函數(shù),嚴(yán)格來(lái)說(shuō)它不是函數(shù)而是select子句中的一個(gè)選項(xiàng)。

    SQL> select distinct job from emp; 消除表行重復(fù)值。

    SQL> select distinct job,deptno from emp; 重復(fù)值是后面的字段組合起來(lái)考慮的

    SQL> select distinct * from emp; 消除重復(fù)記錄

    3)sys_context 獲取環(huán)境上下文的函數(shù)(多用于應(yīng)用環(huán)境)

    scott遠(yuǎn)程登錄

    SQL>select SYS_CONTEXT(‘USERENV’,’IP_ADDRESS’) from dual;

    ——————————————————————————–

    192.168.0.136

    SQL> select sys_context(‘userenv’,’sid’) from dual;

    SYS_CONTEXT(‘USERENV’,’SID’)

    ——————————————————————————–

    129

    SQL> select sys_context(‘userenv’,’terminal’) from dual;

    SYS_CONTEXT(‘USERENV’,’TERMINAL’)

    ——————————————————————————–

    TIMRAN-222C75E5

    the end !??!

    @jackman 共筑美好!

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月24日 15:29
    下一篇 2022年6月24日 15:30

    相關(guān)推薦

    • 存儲(chǔ)過(guò)程語(yǔ)法(sql server存儲(chǔ)過(guò)程語(yǔ)法)

      今天小編給各位分享存儲(chǔ)過(guò)程語(yǔ)法的知識(shí),其中也會(huì)對(duì)sql server存儲(chǔ)過(guò)程語(yǔ)法進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧! oracle存儲(chǔ)過(guò)程基本語(yǔ)法…

      2022年11月26日
    • 寶可夢(mèng)朱紫四大天王屬性怎么樣 四大天王屬性數(shù)值介紹

      寶可夢(mèng)朱紫四大天王屬性如何?四大天王的屬性數(shù)值玩家們還是挺好奇的,想要了解四大天王屬性的可以看看下面小編的介紹,小編會(huì)把四大天王的屬性數(shù)值全都分享在下面,各位趕緊來(lái)小編這里多了解一…

      2022年11月25日
    • 《光遇》11月25日紅石在哪里 11.25紅石位置

      光遇11月25日的紅石出現(xiàn)在霞谷圓夢(mèng)村,許多小伙伴都還不知道它具體在哪,下面就讓小編來(lái)給大家介紹一下光遇11.25紅石的位置,感興趣的小伙伴快來(lái)看看吧。 光遇11.25紅石位置 1…

      2022年11月25日
    • 《光遇》11月25日季節(jié)蠟燭在哪 11.25季節(jié)蠟燭位置2022

      光遇季節(jié)蠟燭的位置每天都會(huì)變化,今天出現(xiàn)在了雨林地區(qū),下面小編就給大家?guī)?lái)了光遇11.25季節(jié)蠟燭位置分享,有需要的小伙伴不要錯(cuò)過(guò)哦。 光遇11.25季節(jié)蠟燭位置2022 今日季節(jié)…

      2022年11月25日
    • 什么是推廣cpa一篇文章帶你看懂CPA推廣渠道

      CPA渠道 CPA指的是按照指定的行為結(jié)算,可以是搜索,可以是注冊(cè),可以是激活,可以是搜索下載激活,可以是綁卡,實(shí)名認(rèn)證,可以是付費(fèi),可以是瀏覽等等。甲乙雙方可以根據(jù)自己的情況來(lái)定…

      2022年11月25日
    • 《寶可夢(mèng)朱紫》樁子是什么?二級(jí)神封印樁位置一覽

      寶可夢(mèng)朱紫中有一種叫做二級(jí)神封印樁的特殊收集道具,很多玩家不知道寶可夢(mèng)朱紫樁子是什么,下面就帶來(lái)寶可夢(mèng)朱紫二級(jí)神封印樁位置一覽,感興趣的小伙伴不要錯(cuò)過(guò),希望能幫助到大家。 二級(jí)神封…

      2022年11月24日
    • 銳龍97900x參數(shù)規(guī)格跑分評(píng)測(cè) 銳龍97900x屬于什么檔次

      銳龍9 7900X是銳龍7000系列處理器中性能頂尖的型號(hào)之一,它采用了這一代標(biāo)配的zen4架構(gòu)和5nm制程工藝,那么它具體的參數(shù)跑分如何,在電腦上世紀(jì)發(fā)揮怎么樣呢,下面就來(lái)看看銳…

      2022年11月24日
    • 《寶可夢(mèng)朱紫》太晶水地龍捕捉位置一覽 太晶水地龍?jiān)谀睦锊蹲?

      近日在貼吧看到有許多玩家在寶可夢(mèng)朱紫中遇到了《寶可夢(mèng)朱紫》太晶水地龍捕捉位置一覽的問(wèn)題,又不知道該怎么辦。今天在這里,小編為大家?guī)?lái)的就是這個(gè)問(wèn)題的解方案,只要你跟著小編的節(jié)奏來(lái),…

      2022年11月24日
    • 交錯(cuò)核心芯片裝備槽在哪?交錯(cuò)核心芯片裝備槽布置一覽

      交錯(cuò)核心芯片裝備槽是很重要的,這些布置在什么地方。不少玩家不清楚該怎么布置才好,在游戲里怎么選擇裝備比較好。想要知道的小伙伴們,就一起來(lái)看看吧。 交錯(cuò)核心芯片裝備槽布置一覽 可以看…

      2022年11月23日
    • 《寶可夢(mèng)朱紫》鈦晶冰路卡利歐怎么抓?太晶冰路卡利歐位置

      寶可夢(mèng)朱紫鈦晶冰路卡利歐怎么抓?在游戲中,鈦晶路卡利歐是一個(gè)非常稀有的寶可夢(mèng),而且路卡利歐本身人氣十分高,很多玩家還不清楚具體的位置在哪,下面一起來(lái)看一下寶可夢(mèng)朱紫鈦晶冰路卡利歐位…

      2022年11月23日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息