oracle 常用函數

來源:互聯網
上載者:User

標籤:

一、字元函數字元函數是oracle中最常用的函數,我們來看看有哪些字元函數:lower(char):將字串轉化為小寫格式。upper(char):將字串轉化為大寫的格式。length(char):返回字串的長度。substr(char, m, n):截取字串的子串,n代表取n個字元的意思,不是代表取到第n個replace(char1, search_string, replace_string)instr(C1,C2,I,J) -->判斷某字元或字串是否存在,存在返回出現的位置的索引,否則返回小於1;在一個字串中搜尋指定的字元,返回傳現指定的字元的位置;C1 被搜尋的字串C2 希望搜尋的字串I 搜尋的開始位置,預設為1J 出現的位置,預設為1 問題:將所有員工的名字按小寫方式顯示SQL> select lower(ename) from emp;問題:將所有員工的名字按大寫的方式顯示。SQL> select upper(ename) from emp;問題:顯示正好為5個字元的員工的姓名。SQL> select * from emp where length(ename)=5;問題:顯示所有員工姓名的前三個字元。SQL> select substr(ename, 1, 3) from emp;問題:以首字母大寫,後面小寫方式顯示所有員工的姓名。SQL> select upper(substr(ename,1,1)) || lower(substr(ename,2,length(ename)-1)) from emp;問題:以首字母小寫,後面大寫的方式顯示所有員工的姓名。SQL> select lower(substr(ename,1,1)) || upper(substr(ename,2,length(ename)-1)) from emp;問題:顯示所有員工的姓名,用“我是老虎”替換所有“A”SQL> select replace(ename,‘A‘, ‘我是老虎‘) from emp;問題:instr(char1,char2,[,n[,m]])用法SQL> select instr(‘azhangsanbcd‘, ‘zhangsan‘) from dual; --返回2SQL> select instr(‘oracle traning‘, ‘ra‘, 1, 1) instring from dual; --返回2SQL> select instr(‘oracle traning‘, ‘ra‘, 1, 2) instring from dual; --返回9SQL> select instr(‘oracle traning‘, ‘ra‘, 1, 3) instring from dual; --返回0,根據條件,由於ra只出現二次,第四個參數3,就是說第3次出現ra的位置,顯然第3次是沒有再出現了,所以結果返回0。注意空格也算一個字元SQL> select instr(‘abc‘,‘d‘) from dual;  --返回0                 二、數學函數數學函數的輸入參數和傳回值的資料類型都是數字類型的。數學函數包括cos,cosh,exp,ln, log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round等我們講最常用的:round(n,[m]) 該函數用於執行四捨五入,如果省掉m,則四捨五入到整數。如果m是正數,則四捨五入到小數點的m位後。如果m是負數,則四捨五入到小數點的m位前。eg、SELECT round(23.75123) FROM dual; --返回24SELECT round(23.75123, -1) FROM dual; --返回20SELECT round(27.75123, -1) FROM dual; --返回30SELECT round(23.75123, -3) FROM dual; --返回0SELECT round(23.75123, 1) FROM dual; --返回23.8SELECT round(23.75123, 2) FROM dual; --返回23.75SELECT round(23.75123, 3) FROM dual; --返回23.751trunc(n,[m]) 該函數用於截取數字。如果省掉m,就截去小數部分,如果m是正數就截取到小數點的m位後,如果m是負數,則截取到小數點的前m位。eg、SELECT trunc(23.75123) FROM dual; --返回23SELECT trunc(23.75123, -1) FROM dual; --返回20SELECT trunc(27.75123, -1) FROM dual; --返回20SELECT trunc(23.75123, -3) FROM dual; --返回0SELECT trunc(23.75123, 1) FROM dual; --返回23.7SELECT trunc(23.75123, 2) FROM dual; --返回23.75SELECT trunc(23.75123, 3) FROM dual; --返回23.751mod(m,n)取餘函數eg、select mod(10,2) from dual; --返回0SELECT MOD(10,3) FROM dual; --返回1floor(n) 返回小於或是等於n的最大整數ceil(n) 返回大於或是等於n的最小整數eg、SELECT ceil(24.56) from dual; --返回25SELECT floor(24.56) from dual; --返回24abs(n) 返回數字n的絕對值對數位處理,在財務系統或銀行系統中用的最多,不同的處理方法,對財務報表有不同的結果                  三、日期函數日期函數用於處理date類型的資料。預設情況下日期格式是dd-mon-yy 即“12-7 月-12”(1)sysdate 返回系統時間eg、SQL> select sysdate from dual;(2)oracle add_months函數oracle add_months(time,months)函數可以得到某一時間之前或之後n個月的時間eg、select add_months(sysdate,-6) from dual; --該查詢的結果是目前時間半年前的時間select add_months(sysdate,6) from dual; --該查詢的結果是目前時間半年後的時間(3)last_day(d):返回指定日期所在月份的最後一天問題:尋找已經入職8個月多的員工SQL> select * from emp where sysdate>=add_months(hiredate,8);問題:顯示滿10年服務年限的員工的姓名和受雇日期。SQL> select ename, hiredate from emp where sysdate>=add_months(hiredate,12*10);問題:對於每個員工,顯示其加入公司的天數。SQL> select floor(sysdate-hiredate) "入職天數",ename from emp;或者SQL> select trunc(sysdate-hiredate) "入職天數",ename from emp;問題:找出各月倒數第3天受雇的所有員工。SQL> select hiredate,ename from emp where last_day(hiredate)-2=hiredate;           四、轉換函式轉換函式用於將資料類型從一種轉為另外一種。在某些情況下,oracle server允許值的資料類型和實際的不一樣,這時oracle server會隱含的轉化資料類型比如:create table t1(id int);insert into t1 values(‘10‘);--這樣oracle會自動的將‘10‘ -->10create table t2 (id varchar2(10));insert into t2 values(1); --這樣oracle就會自動的將1 -->‘1‘;我們要說的是儘管oracle可以進行隱含的資料類型的轉換,但是它並不適應所有的情況,為了提高程式的可靠性,我們應該使用轉換函式進行轉換。 to_char()函數你可以使用select ename, hiredate, sal from emp where deptno = 10;顯示資訊,可是,在某些情況下,這個並不能滿足你的需求。問題:日期是否可以顯示 時/分/秒SQL> select ename, to_char(hiredate, ‘yyyy-mm-dd hh24:mi:ss‘) from emp;問題:薪水是否可以顯示指定的貨幣符號SQL>yy:兩位元字的年份 2004-->04yyyy:四位元字的年份 2004年mm:兩位元字的月份 8 月-->08dd:兩位元字的天 30 號-->30hh24: 8點-->20hh12:8點-->08mi、ss-->顯示分鐘\秒9:顯示數字,並忽略前面00:顯示數字,如位元不足,則用0補齊.:在指定位置顯示小數點,:在指定位置顯示逗號$:在數字前加美元L:在數字前面加本地貨幣符號C:在數字前面加國際貨幣符號G:在指定位置顯示組分隔字元、D:在指定位置顯示小數點符號(.) 問題:顯示薪水的時候,把本地貨幣單位加在前面SQL> select ename, to_char(hiredate, ‘yyyy-mm-dd hh24:mi:ss‘), to_char(sal,‘L99999.99‘) from emp;問題:顯示1980年入職的所有員工SQL> select * from emp where to_char(hiredate, ‘yyyy‘)=1980;問題:顯示所有12月份入職的員工SQL> select * from emp where to_char(hiredate, ‘mm‘)=12;            to_date()函數函數to_date用於將字串轉換成date類型的資料。問題:能否按照中國人習慣的方式年—月—日添加日期。eg、SELECT to_date(‘2012-02-18 09:25:30‘,‘yyyy-mm-dd hh24:mi:ss‘) FROM dual;               五、sys_context()系統函數1)terminal:當前會話客戶所對應的終端的標示符,如電腦名稱2)language: 語言3)db_name: 當前資料庫名稱4)nls_date_format: 當前會話客戶所對應的日期格式5)session_user: 當前會話客戶所對應的資料庫使用者名稱6)current_schema: 當前會話客戶所對應的預設方案名7)host: 返回資料庫所在主機的名稱通過該函數,可以查詢一些重要訊息,比如你正在使用哪個資料庫?select sys_context(‘USERENV‘,‘db_name‘) from dual;注意:USERENV是固定的,不能改的,db_name可以換成其它,eg、select sys_context(‘USERENV‘,‘language‘) from dual;select sys_context(‘USERENV‘,‘current_schema‘) from dual;

 

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.