一、字元函式
介紹:字元函式是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...