Oracle函式的使用

2022-03-19 00:11:34 字數 3811 閱讀 6414

一、字元函式

介紹:字元函式是oracle中最常用的函式,我們來看看有哪些字元函式。

1、lower(char):將字串轉化為小寫格式。

案例:將所有員工的名字按小寫的方式顯示

sql>select lower(ename) from emp;

2、upper(char):將字串轉化為大寫的格式

案例:將所有員工的名字按大寫的方式顯示

sql>select upper(ename) from emp;

3、length(char):返回字串長度

案例:顯示正好為5個字元的員工的姓名

sql>select * from emp where length(ename)=5;

4、substr(char,m,n):取字串的子串,其中m代表從第幾個開始取,n代表取幾個字元。

案例:顯示所有員工的姓名的前三個字元。

sql>select substr(ename,1,3) from emp;

四個函式的綜合案例:

以首字母大寫的方式顯示所有員工的姓名。

sql>select upper(substr(ename,1,1)) || lower(substr(ename,2,length(ename)-1)) from emp;

5、replace(char,searchstr,replacestr):查詢字串中的子串將其替換為另乙個字串,其中searchstr是想要查詢的子串,replacestr是要替換成的字串。

案例:顯示所有員工的姓名,用"我是a"替換所有的"a"

sql> select replace(ename,'a','我是a') from emp;

6、instr(char1,char2,[,n[,m]]):取子串在字串的位置。其中char1是目標字串,char2是子串。

二、數學函式

1、round(n,[m]):該函式用於執行四捨五入,如果省掉m,則四捨五入到整數;如果m是正數,則四捨五入到小數點的m位後;如果m是負數,則四捨五入到小數點的m為位前。

2、trunc(n,[m]):該函式用於擷取數字,如果省掉m,就擷取小數部分;如果m是正數,就擷取到小數點的m位後;如果m是負數,則擷取到小數點的m位前。

3、mod(m,n):該函式用來獲取兩個數的模。m為被除數,n為除數.

4、floor(n):返回小於或是等於n的最大整數,即向下取整。

5、ceil(n):返回大於或等於n的最小整數,即向上取整。

綜合性案例:

顯示在乙個月為30天的情況所有員工的日薪金,忽略餘數:

方法一:sql>select ename,trunc(sal/30) from emp;

方法二:sql>select ename,floor(sal/30) from emp;

6、abs(n):返回數字n的絕對值。

7、acos(n):返回數字的反余弦值。

8、asin(n):返回數字的反正弦值。

9、atan(n):返回數字的反正切值。

10、cos(n):返回數字的余弦值。

11、exp(n):返回e的n次冪。

12、log(m,n):返回對數值。

13、power(m,n):返回m的n次冪。

三、日期函式

介紹:日期函式用於處理date型別的資料。預設情況下日期格式是dd-mon-yy,即12-7月-78。

1、sysdate:該函式返回系統時間。

2、add_months(d,n):返回指定的日期上加n個月。

3、last_day(d):返回指定日期所在月份的最後一天。

案例:1、查詢已經入職8個月多的員工。

sql>select * from emp where sysdate>add_months(hiredate,8);

2、顯示滿10年服務年限的員工的姓名和受僱日期。

sql>select ename,hiredate from emp where sysdate>=add_months(hiredate,10*12);

3、對於每個員工,顯示其加入公司的天數

sql>select trunc(sysdate-hiredate) from emp;

4、找出各月倒數第三天受僱的所有員工。

sql>select * from emp where hiredate=last_day(hiredate)-2;

四、轉換函式

介紹:轉換函式用於將資料型別從一種轉為另外一種,在某些情況下,oracle server允許值的資料型別和實際不一樣,這時,oracle server會隱式的轉換資料型別。

比如:sql>create table t1(id number);

sql>insert into t1 values('10');

這樣oracle會自動的將'10'轉換成10。

sql>create table t2(id varchar2(10));

sql>insert into t2 values(10);

這樣oracle就會自動的將10轉換成'10'。

我們要說的是儘管oracle可以進行隱式的資料型別的轉換,大師它並不適應所有的情況,為了提高程式的可靠性,我們應該使用轉換函式進行轉換。

1、to_char:轉換成具有一定格式的字串。

日期:yy:兩位數字的年份2004=>04

yyyy:四位數字的年份2004

mm:兩位數字的月份 8月=>08

dd:兩位數字的天 30

hh24:晚上8點=>20

hh12:晚上8點=>08

mi:顯示分鐘

ss:顯示秒

案例:顯示雇員的入職時間,精確到時分秒

sql>select ename to_char(hirdate,'yyyy-mm-dd hh24:mi:ss') from emp;

案例:顯示2023年入職的員工資訊

sql>select * from emp where to_char(hiredate,'yyyy')=1980;

貨幣:9:顯示數字,並忽略前面0

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

.:在指定位置顯示小數點

,:在指定位置顯示逗號

$:在數字前加美元標記

l:在數字前加本地貨幣符號

c:在數字前加國際貨幣符號

g:在指定位置顯示組分隔符

d:在指定位置顯示小數點符號

案例:顯示雇員的薪水,加上本地貨幣符號

sql>select ename,tochar(sal,'l99,999.99') from emp;

2、to_date:用於將字串轉換成date型別的資料。

案例:能否按照中國人習慣的方式年-月-日新增日期。

sql>insert into emp values(888,'jack','mamager',7802,to_date('1981-12-04','yyyy-mm-dd'),800,80,20);

五、系統函式

1、sys_context:通過該函式,可以查詢一些重要資訊,比如你正在使用哪個資料庫等。該函式有以下引數:

(1)terminal:當前會話客戶所對應的終端的識別符號

(2)language:語言

(3)db_name:當前資料庫名稱

(4)nls_date_format:當前會話客戶所對應的日期格式

(5)session_user:當前會話客戶所對應的資料庫使用者名稱

(6)current_schema:當前會話客戶所對應的預設方案名

(7)host:返回資料庫坐在主機的名稱

案例:如何獲知你正在使用哪個資料庫

sql>select sys_context("userenv","db_name") from dual;

oracle函式 length()函式的使用

length 函式 1 按照字串進行分組統計 select length id card count 1 from 表名稱 group by length id card 結果 2 對id card字段長度既不等於18又不等於15的資料進行統計 select count 1 from 表名 wher...

oracle函式trunc的使用

oracle函式trunc的使用 1 日期比較時精確到日,可以使用 trunc sysdate,dd 函式。函式支援格式有 yyyy mm dd hh mi 可以用 select trunc sysdate,yyyy from dual 看看結果是什麼。不要按下面的方式比較日期 to date to...

oracle函式trunc的使用

1 日期比較時精確到日,可以使用 trunc sysdate,dd 函式。函式支援格式有 yyyy mm dd hh mi 可以用 select trunc sysdate,yyyy from dual 看看結果是什麼。不要按下面的方式比較日期 to date to char logtime,yyy...