Oracle初級函數的使用

來源:互聯網
上載者:User

標籤:

--1.字元函數
--UPPER(string|column) 可以將字元轉成大寫
select upper(‘helloword‘) from dual;
select upper(ename) from emp;

--LOWER(string|column) 將指定的字串轉換成小寫
select lower(‘HELLOWORD‘) from dual;
select lower(ename) from emp;

--INITCAP(string|column) 將單詞的第一個字母大寫
select initcap (‘hello word‘) from dual;
--員工姓名首字母大寫,只要首字母大寫,其他都變成小寫
select initcap(ename) from emp;

--LENGTH(string|column)計算字串的長度
select length(‘helloword‘) from dual;
select ename ,length(ename) 長度 from emp;
--查詢姓名長度等於5的員工
select ename,length(ename) from emp where length(ename) = 5;

--REPLACE(string|column)替換字串
select replace(ename,‘A‘,‘_‘) 替換後 from emp;

-- CONCAT(string1,String2)拼接字串 || --> 拼接符號 只能有兩個參數
select concat(‘hello‘,‘word‘) 拼接後 from dual;

--SUBSTR(string,start,length)截取字串。【閉區間】
-- 第一個參數為要截取的內容,Oracle中第一個字元序列是(0 或者 1),第二個參數是截取開始的位置,第三個參數是截取字串的長度
--如果第二個參數為負數的話,那麼0和1就不一樣了,因為-0也相當於0,-1的話就是從最後一個來時數,然後往後面數第三個參數的長度
select ename,substr(ename,-0,3) from emp;
select ename,substr(ename,0,3) from emp;
select ename,substr(ename,-1,3) from emp;
select ename,substr(ename,1,3) from emp;
select ename,substr(ename,-3,3) from emp;
select ename,substr(ename,3,3) from emp;
-- 若只有兩個參數,第一個參數為截取的欄位,第二個參數為開始的位置,一直截取到末尾,也可以是負數,表示從後面開始往後數截取這個參數長度的字元
select ename,substr(ename,-5) from emp;

----------------------------------------------------------------------------------------------------------------
--2.數值函數
--ROUND()對數字進行四捨五入
--四捨五入,只有一個數位參數,表示保留到個位
select round(1024.633),round(-1024.633) from dual;
--可以傳兩個參數,正數表示從小數點向右N位進行四捨五入,如果是負數,表示從小數點向左N位進行四捨五入
select round(1024.633,-1),round(1024.633,2) from dual;

--TRUNC()對數字進行截取(與ROUND作用差不多,唯一區別是不進行四捨五入操作)
select trunc(1024.633),trunc(-1024.633) from dual;
select trunc(1024.663,-1),trunc(1024.663,1) from dual;

--MOD(number1,number2)求模運算
--運算子只支援 +-*/ ,模數要用函數mod()
select mod(6,4) from dual;

----------------------------------------------------------------------------------------------------------------
--3.日期函數
--獲得目前時間用sysdate
select sysdate from dual;

--日期加減
--當前日期之後
select sysdate + 3,sysdate + 300 from dual;
--當前日期之前
select sysdate - 3,sysdate - 300 from dual;
--總結:日期-數字=日期 日期+數字=日期 日期-日期=數字(天數)

--查詢所有員工入職的天數
select ename,sysdate - hiredate days from emp;
--查詢所有員工入職的星期數
select ename,(sysdate - hiredate)/7 weeks from emp;

--LAST_DAY()計算指定日期所在月的最後一天
select last_day(sysdate) from dual;

--NEXT_DAY()求下一個指定星期X的日期
--計算下一個星期三是幾號
select next_day(sysdate,‘星期三‘) from dual;

--ADD_MONTHS()在指定日期上加上相應的月數 --> 兩個參數,第一個是指定日期,第二個是月數
select add_months(sysdate,4) from dual;

--MONTHS_BETWEEN()求出指定日期範圍的月數
--查詢所有員工的入職月數 MONTHS_BETWEEN(date1,date2)計算規則是:date1-date2
select ename,trunc(months_between(sysdate,hiredate)) 月數 from emp;

--------------------------------------------------------------------------------------------------
--4.轉換函式
--TO_CHAR() 日期或數字轉換成字串
select to_char(sysdate,‘yyyy-mm-dd‘) from dual;
--yyyy - 年 mm - 月 dd - 天
select to_char(sysdate,‘yyyy-mm-dd‘),to_char(sysdate,‘yyyy‘),to_char(sysdate,‘mm‘),to_char(sysdate,‘dd‘) from dual;
--去掉0 ‘fmyyyy-mm-dd‘
select to_char(sysdate,‘fmyyyy-mm-dd‘) from dual;
--hh24 - 24小時制(hh12 - 12小時制) mi - 分 ss - 秒
select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss‘) from dual;
select to_char(sysdate,‘yyyy-mm-dd hh12:mi:ss‘) from dual;
--後面是格式顯示,9表示普通數字 $表示貨幣符號 L表示本地local錢的符號 後面兩個只能和9一起用
--從後面開始排列,就是先排4個8,再拍3個...直到排完 也是從後面開始顯示的
SELECT TO_CHAR(88888888888,‘999,999,999,999,9999‘) FROM dual;
SELECT TO_CHAR(88888888888,‘L999,999,999,999,999‘) FROM dual;

--TO_NUMBER() 將數字形式的字串轉換成數值
--兩個值相加
select 123 + ‘456‘ from dual;
select to_number(‘123‘) + 456 from dual;

--TO_DATE() 將字串轉換成日期
select to_date(‘1993-12-09‘,‘yyyy-mm-dd‘) from dual;
select to_char(to_date(‘1993-12-09‘,‘yyyy-mm-dd‘),‘yyyy-mm-dd‘) from dual;

-------------------------------------------------------------------------------------------------
--4.通用函數
--NVL函數
--查詢出所有員工的年薪
select ename,job,hiredate,(sal+comm)*12 income from emp;
--錯誤原因:因為獎金為null的值參與了運算,得到是一個不可預計的結果。解決上面空值錯誤可以使用oracle提供的NVL函數
--NVL(value1,value2):表示的意思就是如果valu1為值null,則計算時用value2替換參與運算
select ename,job,hiredate,(sal+nvl(comm,0))*12 income from emp;

--DECODE函數 CASE 多條件多數值判斷
--DECODE(運算式,匹配條件1,value1,匹配條件2,value2…….default)
--查詢全部僱員的職位:要求顯示CLERK: 業務員 SALESMAN:銷售人員 MANAGER:經理 ANALYST:分析員 PRESIDENT:總裁
select ename,decode(job,‘CLERK‘,‘業務員‘,‘SALESMAN‘,‘銷售人員‘,‘MANAGER‘,‘經理‘,‘ANALYST‘,‘分析員‘,‘PRESIDENT‘,‘總裁‘) 職位 from emp;

Oracle初級函數的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.