亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Oracle數據庫開發利器之函數

難度初級
時長 1小時10分
學習人數
綜合評分9.70
92人評價 查看評價
9.8 內容實用
9.7 簡潔易懂
9.6 邏輯清晰
  • SQL> create table users

    ? 2? (id varchar2(10),

    ? 3? name varchar2(11),

    ? 4? cardid varchar2(18),

    ? 5? deptno varchar2(10),

    ? 6? regdate date,

    ? 7? age number(4,0));


    表已創建。


    SQL> insert into users values('1','abc','12345619920505','01',sysdate,'');


    已創建 1 行。


    SQL> select * from users;


    ID? ? ? ? ?NAME? ? ? ? CARDID? ? ? ? ? ? ?DEPTNO? ? ?REGDATE? ? ? ? ? ? ? ?AGE

    ---------- ----------- ------------------ ---------- -------------- ----------

    1? ? ? ? ? abc? ? ? ? ?12345619920505? ? ?01? ? ? ? ?30-1月 -22


    SQL> select substr(cardid,7,8) from users;


    SUBSTR(CARDID,7,

    ----------------

    19920505


    SQL> select replace(deptno,'01','信息技術') from users;


    REPLACE(DEPTNO,'01','信息技術')

    --------------------------------------------------------------------------------


    信息技術


    SQL> select mod(age,10) from users;


    MOD(AGE,10)

    -----------



    SQL> update usres set age=25;

    update usres set age=25

    ? ? ? ?*

    第 1 行出現錯誤:

    ORA-00942: 表或視圖不存在



    SQL> update users set age=25;


    已更新 1 行。


    SQL> select mod(age,10) from users;


    MOD(AGE,10)

    -----------

    ? ? ? ? ? 5


    SQL> select extract(year from regdate) from users;


    EXTRACT(YEARFROMREGDATE)

    ------------------------

    ? ? ? ? ? ? ? ? ? ? 2022


    SQL> select * from users where extract(month from regdate) = 5;


    未選定行


    SQL> select * from users where extract(month from regdate) = 1;


    ID? ? ? ? ?NAME? ? ? ? CARDID? ? ? ? ? ? ?DEPTNO? ? ?REGDATE? ? ? ? ? ? ? ?AGE

    ---------- ----------- ------------------ ---------- -------------- ----------

    1? ? ? ? ? abc? ? ? ? ?12345619920505? ? ?01? ? ? ? ?30-1月 -22? ? ? ? ? ? ?25

    查看全部
  • SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;


    TO_CHAR(SYSDATE,'YY

    -------------------

    2022-01-30 12:57:45


    SQL> select to_char(sysdate,'YYYY-MM-DD HH12:MI:SS') from dual;


    TO_CHAR(SYSDATE,'YY

    -------------------

    2022-01-30 12:58:01



    SQL> select to_date('2015-5-22','YYYY-MM-DD') from dual;


    TO_DATE('2015-

    --------------

    22-5月 -15


    SQL> select to_char(12345.678,'$99,999.999') from dual;


    TO_CHAR(1234

    ------------

    ?$12,345.678


    SQL> select to_char(12345.678,'$99,999,999') from dual;


    TO_CHAR(1234

    ------------

    ? ? ?$12,346


    SQL> select to_char(12345.678,'S99,999,999') from dual;


    TO_CHAR(123

    -----------

    ? ? +12,346


    SQL> select to_number('$1,000','$9999') from dual;


    TO_NUMBER('$1,000','$9999')

    ---------------------------

    查看全部
    0 采集 收起 來源:Oracle轉換函數

    2022-01-30

  • 1.系統時間

    sysdate,默認dd-mon-rr? 日-月-年


    2.日期操作

    add_monthw(date,i)

    i可以任何整數,如果i是小數,會自動截取整數


    next_day(date,char)

    如果char的值是‘星期一’,則返回date是指定日期的下一個周一是哪天


    last_day(date) 返回日期所在月的最后一天


    months_between(date1,date2)---2個日期之間間隔的月份



    SQL> select sysdate from dual;


    SYSDATE

    --------------

    30-1月 -22


    SQL> select add_months(sysdate,3),add_months(sysdate,-3) from dual;


    ADD_MONTHS(SYS ADD_MONTHS(SYS

    -------------- --------------

    30-4月 -22? ? ?30-10月-21


    SQL> select next_day(sysdate,'星期一') from dual;


    NEXT_DAY(SYSDA

    --------------

    31-1月 -22


    SQL> select last_day(sysdate) from dual;


    LAST_DAY(SYSDA

    --------------

    31-1月 -22


    SQL> select month_between('20-5月-15','10-1月-15') from dual;

    select month_between('20-5月-15','10-1月-15') from dual

    ? ? ? ?*

    第 1 行出現錯誤:

    ORA-00904: "MONTH_BETWEEN": 標識符無效



    SQL> select months_between('20-5月-15','10-1月-15') from dual;


    MONTHS_BETWEEN('20-5月-15','10-1月-15')

    ---------------------------------------

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4.32258065


    SQL> select extract(year from sysdate) from dual;


    EXTRACT(YEARFROMSYSDATE)

    ------------------------

    ? ? ? ? ? ? ? ? ? ? 2022


    SQL> select extract(month from sysdate) from dual;


    EXTRACT(MONTHFROMSYSDATE)

    -------------------------

    ? ? ? ? ? ? ? ? ? ? ? ? 1


    SQL> select extract(day from sysdate) from dual;


    EXTRACT(DAYFROMSYSDATE)

    -----------------------

    ? ? ? ? ? ? ? ? ? ? ?30


    SQL> select extract(hour from timestamp '2015-10-1 12:12:12') from dual;


    EXTRACT(HOURFROMTIMESTAMP'2015-10-112:12:12')

    ---------------------------------------------

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?12

    查看全部
    0 采集 收起 來源:Oracle日期函數

    2022-01-30

  • length 計算字符的長度


    select length('abc ') from dual;


    contact(char1,char2)字符串連接函數----2個參數都必須是字符類型數據

    與||操作符的作用相同


    trim(c2 from c1) 從字符串c1中去除字符c2

    ltrim(c1[,c2]) 去除頭部的c2

    rtrim(c1,[,c2])

    trim(c1) 去除首尾的空格的作用


    replace(char,s_string,[,r_string])

    省略r_string用空格替換

    replace和trim不同,trim一次只可以替換一個字符,replace可以替換字符串



    SQL> select concat('ab','cd') from dual;


    CONC

    ----

    abcd


    SQL> select length('abcd ') from dual;


    LENGTH('ABCD')

    --------------

    ? ? ? ? ? ? ?5


    SQL> select 'ab'||'cd' from dual;


    'AB'

    ----

    abcd


    SQL> select trim('ab' from 'abcde') from dual;

    select trim('ab' from 'abcde') from dual

    ? ? ? ?*

    第 1 行出現錯誤:

    ORA-30001: 截取集僅能有一個字符



    SQL> select trim('a' from 'abcde') from dual;


    TRIM

    ----

    bcde


    SQL> select ltrim('ababaa','a') from dual;


    LTRIM

    -----

    babaa


    SQL> select rtrim('ababaa','a') from dual;


    RTRI

    ----

    abab


    SQL> select replace('abcde','a','A') from dual;


    REPLA

    -----

    Abcde


    SQL> select replace('abcde','a') from dual;


    REPL

    ----

    bcde


    SQL> select replace('abcde','ab','A') from dual;


    REPL

    ----

    Acde

    查看全部
  • substr 截取字符串

    initcap 首字母大寫



    SQL> select upper('abcd'),lower('DEW33e'),initcap('asd') from dual;


    UPPE LOWER( INI

    ---- ------ ---

    ABCD dew33e Asd


    SQL> select substr('abcd',2,3),substr('abcde',2),substr('abcde',-2,1) from dual;



    SUB SUBS S

    --- ---- -

    bcd bcde d

    查看全部
  • round(n[,m])

    省略m:0

    m>0 小數點后m位

    m<0 小數點前m位




    ceil(n) 取最大值

    floor(n) 取最小值



    SQL> select round(23,4),round(23.45,1),round(23.45,-1);

    select round(23,4),round(23.45,1),round(23.45,-1)

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *

    第 1 行出現錯誤:

    ORA-00923: 未找到要求的 FROM 關鍵字



    SQL> select round(23,4),round(23.45,1),round(23.45,-1) from dual;


    ROUND(23,4) ROUND(23.45,1) ROUND(23.45,-1)

    ----------- -------------- ---------------

    ? ? ? ? ?23? ? ? ? ? ?23.5? ? ? ? ? ? ? 20


    SQL> select ceil(23.45),floor(23.45) from dual;


    CEIL(23.45) FLOOR(23.45)

    ----------- ------------

    ? ? ? ? ?24? ? ? ? ? ?23


    SQL> select abs(23.45),abs(-23.45),abs(0) from dual;


    ABS(23.45) ABS(-23.45)? ? ?ABS(0)

    ---------- ----------- ----------

    ? ? ?23.45? ? ? ?23.45? ? ? ? ? 0


    SQL> select mod(5,2) from dual;


    ? MOD(5,2)

    ----------

    ? ? ? ? ?1


    SQL> select mod(5,null) from dual;


    MOD(5,NULL)

    -----------



    SQL> select power(2,3),power(null,2) from dual;


    POWER(2,3) POWER(NULL,2)

    ---------- -------------

    ? ? ? ? ?8


    SQL> select sqrt(16) from dual;


    ? SQRT(16)

    ----------

    ? ? ? ? ?4

    查看全部
    0 采集 收起 來源:Oracle數值函數

    2022-01-30

  • 函數的作用


    方便數據統計

    處理查詢結果


    函數分類

    1. 內置函數

    2. 自定義函數



    1. 數值函數----數值進行操作的函數

    2. 字符函數----

    3. 日期函數----

    4. 轉換函數----數據類型進行轉換



    在查詢語句中使用函數

    將小寫字母轉換成大寫字母

    查詢時間間隔

    四舍五入

    查看全部
  • 5.轉換函數

    5.1日期轉換成字符:

    to_char(date,fmt,params)

    date:將要轉換的日期:

    fmt:轉換的格式(見截圖)

    params:日期的語言,通常都不寫,取默認

    select sysdate from dual;--2021/5/12 0:48:37

    select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;--2021-05-12 00:48:24


    5.2字符轉換成日期:

    to_date(char,fmt,params):按照系統默認格式顯示日期

    select to_date('2021-05-12','YYYY_MM_DD') from dual;--2021/5/12



    5.3數字轉換成字符:

    to_char(number,fmt);

    fmt格式比如下面這種:

    9:顯示數字并忽略前面的0

    0:顯示數字,位數不足,用0補齊

    .或D:顯示小數點

    ,或G:顯示千位符

    $:美元符號

    s:加正負號(前后都可以,但是不能同時都加上)

    select to_char(12345.678,'$99,999.999') from dual;-- $12,345.678

    轉換的時候注意小數點,否則會四舍五入


    5.4字符轉換成數字:

    to_number(char,fmt)

    fmt是轉換的格式,可省略

    select to_number('$1,000','$9999') from dual;----1000

    查看全部
    0 采集 收起 來源:Oracle轉換函數

    2021-05-12

  • 4.日期函數

    系統時間:sysdate

    日期操作:

    add_months(date,i):

    i為任何一個整數,若為小數,則自動取整,若為負數,則減去相應月數;

    select add_months(sysdate,3) from dual;


    next_day(date,char);

    如果char值是'星期一',則返回date指定日期的下周一是哪天;

    select next_day(sysdate,'星期一') from dual;


    last_day(date):

    返回某月最后一天


    extrcat(date from datetime):(ORACLE貌似不支持)

    返回datetime相應的日期部分,若返回日期,則寫成year from datetime;

    select extrcat(day from sysdate) from dual

    查看全部
    0 采集 收起 來源:Oracle日期函數

    2021-05-12

  • 3.字符函數

    3.1? 大小寫轉換函數:

    upper(char):轉換為大寫;? ? lower(char):轉換為小寫;? ? initcap(char)將首字母轉換為大寫;

    (用處:比如注冊用戶名時不區分大小寫)

    3.2 獲取子字符串函數:substr(char,m,n)從m位開始截取n個字符串

    (注:m=0從首字母開始截取,m<0 從后面開始截?。?/p>

    eg:

    select substr('60040019951001xxxx',7,8) from dual;

    select substr('60040019951001xxxx',-12,8) from dual;

    3.3 獲取字符串長度函數:

    length(char);若char單引號內有空格,也會被計算在內。

    3.4 字符串連接函數:

    concat(char1,char2);與||操作符作用一樣

    select concat('ab','cd') from dual;

    select 'ab'||'cd' from dual;

    3.5 去除子串函數:

    trim(c2 from c1);從字符串c1中去除字符c2

    select trim('a' from? 'abcdea') from dual;--會去除所有帶a的

    ltrim(c1,c2);從c1中去除c2

    select ltrim('extend#123456' , 'extend#') from dual;

    rtrim(c1,c2);

    select rtrim('abccfdaa' , 'a') from dual;--會將u右側遇到的a都去除

    trim(c1):表示去除首位空格,同理其余兩個為去除左/右的空格;

    3.6 替換函數:

    replace(char,string1,string2)

    查看全部
  • 1.數值函數:

    四舍五入函數:

    round(n,m),省略m時:0,m>0,小數點后幾位,m<0 小數點前幾位;

    取整函數:

    ceil(n):取最大值;(這里如果有小數,就會+1,eg:23.45取24)

    floor(n):取最小值(eg:23.45取23)n

    絕對值:ABS(n):

    取余:MOD(M,N);若n為null,則結果也為空

    eg:select? from mod(acc_code,50) from dual;

    power(m,n):m 的n次冪,2^3=8

    sort(n):平方根

    2.三角函數

    查看全部
    0 采集 收起 來源:Oracle數值函數

    2021-05-11

  • --在查詢中使用函數
    --員工信息表
    create table xcc_users (
    id varchar2(10),name varchar2(11),cardid varchar2(18),
    deptno varchar2(10),regdate date,ace number(4));
    --插入一條數據
    insert into xcc_users (id,name,cardid,deptno,regdate,ace)values('1','abc','123456789012345678','01','22-5月-15','25');
    select * from xcc_users;
    1.在員工信息表查詢出員工的生日
    select substr(cardid,7,8) from xcc_users;
    2.將部門號全部替換成'信息技術'
    select replace(deptno,'01','信息技術')from xcc_users;
    3.將員工信息表中的年齡字段與10取余數
    select mod(ace,10) from xcc_users;
    4.取得員工入職的年份
    select extract(year from regdate) from xcc_users;
    5.查詢出5月份入職的員工信息
    select * from xcc_users where extract(month from regdate)=5;

    查看全部
  • -- 轉換函數 - 對不同數據的轉換
    1.日期轉換字符的函數 ?
    TO_CHAR(轉換的日期[,轉換的格式[,日期的語言]])
    默認 格式:DD-MON-RR
    --日期的語音 一般不用指定
    格式有 YY YYYY YEAR,MM MONTH ,DD DAY ,HH24 HH12,MI SS
    ?select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;? --示例

    2.字符轉換成日期的函數
    TO_DATE(要轉換的日期[,要轉換的格式[,日期的語言]])
    select to_date('2015-11-11','yyyy-mm-dd hh24:mi:ss') from dual;

    3.數字轉換字符的函數
    TO_CHAR (要轉換的數字,[,轉換格式])
    -- 轉換格式 9:顯示數字并忽略前面的0 ,0:顯示數字,位數不足,用0補齊
    -- .或D:顯示小數點 , ,或G:顯示千位數 $:美元符號, S加正負號(前后都可以)
    select to_char(1234.654) from? dual;
    select to_char(1234.654,'s$99,90.9999') from? dual;

    4.字符轉換成數字的函數
    TO_NUMBER(要轉換的字符,[,格式])
    select to_number('$1,000','$9999') from dual;

    查看全部
    0 采集 收起 來源:Oracle轉換函數

    2021-02-21

  • -- 系統時間
    SYSDATE? 默認格式: DD-MON-RR? 日月年
    SELECT SYSDATE FROM DUAL; --示例


    -- 日期操作
    1.用于添加指定的月份,返回在指定日期添加的月份
    ADD_MONTHS(date,i) ?
    --i如果是小數,則截取整數部分,如果負數,相對于為原日期監區月份
    select add_months(sysdate,3),add_months(sysdate,-3) from dual;?? --示例
    ?
    ?2.?? NEXT_DAY(date,char) 返回下一個星期幾是哪天
    --date 計算的日期 ,
    --char 星期幾 如果char的值是星期一,則返回date指定日期的下周一是哪天
    select next_day(sysdate,'星期一') from dual; --示例

    3.LAST_DAY(date) 用于返回date所在月的最后一天
    select last_day(sysdate) from dual;

    4. MONTHS_BETWEEN(date1,date2) 表示兩個日期之間相隔的月份
    select months_between(sysdate,'01-1月-21') from dual;

    5.EXTRACT(date from datetime) 返回 年或月或日,時/分/秒等
    --date 要返回 datetime 的年 year或月 month 或日day
    -- datetime 計算的日期時間
    ?select extract(year from sysdate) from dual; --示例 返回日期年份
    ? select extract(month from sysdate) from dual; --示例 返回月份
    ? select extract(day from sysdate) from dual; --示例 返回日
    ?select extract(hour from timestamp '2015-10-1 17:25:13') from dual; --返回 小時

    查看全部
    0 采集 收起 來源:Oracle日期函數

    2021-02-21

  • --獲取字符串長度函數
    1.?? length? 字符串長度,空格也包括
    select length('a bc ') from dual;

    2.? CONCAT(char1,char2) 字符串連接函數,與||操作符的作用一樣
    ?select concat('ab','cd')from dual;--示例
    select 'ab'||'cd' from dual;--示例

    3.TRIM(c2 FROM c1)去除子串函數 ,表示從字符串c1中去除字符c2 ,一次只能去除一個字符
    select trim('a' from 'abcd') from dual;--示例
    select trim(' a? 3 ') from dual;--示例 只有一個參數,可以去除首尾空格
    3.1? ltrim(c1[,c2]) 去除子串函數 ,表示從字符串c1中去除字符c2 ,可以去除多個,只有一個參數,可以去除左邊空格
    select ltrim('abcabcf' ,'aebcd') from dual;--示例
    3.2 RTRIM(c1[,c2]) 去除子串函數 ,表示從字符串c1中去除字符c2 ,這個是去除尾部的第一個,只有一個參數,可以去除右邊空格
    select rtrim('abcabcfd' ,'abcd') from dual;--示例

    4.替換函數 REPLACE(char,s_string[,r_string]) 省略r_string用空格替換
    select replace('abced','a','A') from dual;

    查看全部
  • --?? 字符函數
    -- 1.大小寫轉換函數
    UPPER(char) 小寫轉大寫 ,LOWER(char) 大寫轉小寫, INITCAP 首字母轉換為大寫 ;
    SELECT UPPER('Abc'),lower('ADc'),initcap('abD') FROM dual; --示例

    獲取/截取,子字符串函數 ?
    SUBSTR(char,[m[,n]])? ?
    --char 源字符串,m 取子串的開始位置,n 截取子串的位數
    -- n可以省略,當n省略時表示從m的位置截取到末尾
    --當M為零,從頭部開始截取,M為負數,從尾部開始截取
    SELECT SUBSTR('abcdefg',0,1),SUBSTR('abcdefg',1,2),substr('abcdefg',-3,3) FROM DUAL;

    查看全部
  • oracle里的一個特殊的表,dual表,有一些函數必須指定目標表,可以寫這個,這個里面是一個一行一列的表;
    -- 數值函數
    -- 1.四舍五入
    --ROUND(n,[,m])
    --省略m:0
    --m>0:小數點后m位,m<0:小數點前m位
    --n表示要進行四舍五入的值,m表示保留小數點后幾位或前幾位
    select round(23.4),round(23.45,1),round(23.45,-1) from dual? ;
    select * from dual;
    -- 2.取整函數
    CEIL(n) 取最大值,向上取整,后面多大都會進一位
    FLOOR(n) 取最小值,向下取整,后面多小都會進一位
    select ceil(23.45),floor(23.45) from dual;
    -- 3.常用函數
    ABS(n) 取絕對值,如果是正就返回本身,負數就返回正的,0還是0;
    select abs(23.45),abs(-23) from dual;
    MOD(m,n)? 取余數 ,m表示除數,n表示被除數 ,表示m/n,如果m或n有一個是null值,返回null;
    select mod(5,2),mod(10,null),mod(10,2) from dual;
    POWER(m,n) 表示返回m的n次冪
    select power(2,3),power(null,2) from dual;
    SQRT(n) 表示平方根,sqrt(16),結果是4
    select sqrt(16) from dual;
    -- 4.三角函數
    正弦值 SIN(N),反弦值 ASIN(N)
    余弦值 COS(N),反余弦值 ACOS(N)
    正切值 TAN(N),反正切值 ATAN(N)

    查看全部
    0 采集 收起 來源:Oracle數值函數

    2021-02-14

  • 函數的作用:方便數據的統計,處理查詢結果

    函數分類

    數據庫自帶函數/自定義函數

    還可分為

    數值函數,字符函數,日期函數,轉換函數

    查看全部
  • 使用小技巧

    查看全部
    0 采集 收起 來源:Oracle轉換函數

    2020-12-04

  • 補充一下“

    replace 是整體替換

    translate 是逐個替換

    replace('qwertra','we','W')
    translate('qwertra','we','W')

    執行體會一下

    查看全部
  • 數值函數、字符函數、日期函數、轉換函數
    查看全部
    0 采集 收起 來源:課程總結

    2020-08-02

  • 字符函數總結

    查看全部
    0 采集 收起 來源:課程總結

    2020-08-02

  • extract()查詢指定日期的信息
    查看全部
  • extract(year from regdate)取日期年份例子
    查看全部
  • mod()取余數例子
    查看全部
首頁上一頁1234567下一頁尾頁

舉報

0/150
提交
取消
課程須知
小伙伴們,學習本課程前需要熟悉Oracle的SQL語句。關于SQL語句的內容可以查看課程《Oracle數據庫開發必備利器之SQL基礎》,鏈接在此:http://www.xianlaiwan.cn/learn/337
老師告訴你能學到什么?
1、能夠掌握Oracle的常用函數 2、能夠在查詢中熟練使用Oracle函數,以方便數據的查詢統計

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!