oracle 系統自帶幾個常用函式

who520發表於2019-10-22

今天給各位剛入門的oracle sql的朋友說一些系統自帶的常用函式,通過函式來實現某些效果會非常的省事便捷,函式可以用在適當的dml語句和查詢語句中。


我們今天所有的示例都為scott模式下的emp表,下面是該表的當前資料


一 substr()函式

說明

1.substr()函式為字串擷取函式

2.需要傳輸三個引數,分別是指定擷取字串,指定開始擷取位置,和擷取長度,來得出需要的結果

3.起始擷取位置都是從左開始數,如果想從右邊開始則需要在指定起始位置前面寫負號

4.無論從左還是右開始擷取,擷取位數始終是從指定位置從左往右數

5.如果指定的擷取個數大於原有的字元長度,則會從指定位置擷取到最後一位為止


基本語法

select substr(string [-]int,int) from tab;


示例1

通過擷取job欄位

預設從左邊開始第一個字元擷取,擷取3位


示例2

從右開始第二個字元,擷取3位


示例3

指定擷取長度大於字串剩餘長度



二、max()函式

說明

1.求出一列的最大值

2. 只需要傳入要計算的列名

3. 計算時候會自動拋開為null的值

4.只能傳入一列作為引數



基本語法

select max(col) from tab;


示例

求出最大的empno


三、min()函式

說明

1.求出一列的最小值

2.只需要傳入要計算的列名

3. 計算時候會自動拋開為null的值

4.只能傳入一列作為引數


基本語法

select  min(col) from tab;



示例

求出最小的mgr列值



四、sysdate

說明

1.sysdate可以得出當前的系統時間,會精確到時分秒(當然這個系統顧名思義是系統上的時間,如果系統時間是錯的,那麼得出的也就是錯的)

2.sysdate 在where中使用的場景更多

3.如果查詢當前時間建議使用基表dual(用其他表也可以,但是會跟根據表中的行數而顯示多次)


基本語法

select sysdate from dual;
或
select  *  from tab where col=sysdate;



示例1

查詢當前系統時間


示例2

在where條件中使用

(查詢僱傭日期早與當前時間的員工資訊)




五、trunc()函式

說明

  1. 可以對數字和日期欄位進行擷取

  2. 對於數字擷取預設返回整數,對於時間擷取會捨去時分秒

  3. 必要傳入進行處理的時間或者數字格式的欄位或者字串,可選引數用來控制顯示結果

  4. 對於返回數字來說必須,要控制返回的小數必須為非0,否則不會顯示小數

  5. 對於數字來說,不會四捨五入


基本語法

select trunc(sysdate[,'yyyy'|,'mm'|,'dd']) from dual;
或
select  trunc(col[,int])  from tab;


擷取時間示例

示例1

擷取當前時間


示例2

擷取當前時間返回該年第一天


示例3

擷取當前時間返回,該月第一天


示例3

擷取當前時間返回,該時間欄位的年月日,等同於不加任何引數



數字擷取示例

示例1

返回整數



示例2

保留一位小數

(由於小數一位小數正好是0,所以不會顯示小數結果)


正常的顯示結果



示例3

整數取捨

(將指定位數前加上符號,則會指定整數部分變成0)





六、to_date()


說明

  1. 將字串轉換成為時間格式

  2. 必須明確指定時間格式

  3. 字串或欄位值必須滿足指定的時間格式

  4. 在where條件中使用情況較多


基本語法

select to_date('xxxxxxxxxxxxxx','YYYY-MM-DD H24:MI:SS') from dual;
或
select  to_date(col,'YYYY-MM-DD') from tab;



示例1

將字串轉換成為時間




七、to_char()


說明

  1. 將時間格式轉換成字串格式

  2. 可以指定轉換格式,在指定的格式必須滿足可以將日期轉換過來

  3. 在where條件中使用情況較多


基本語法

select to_char('xxxx-xx-xx xx:xx:xx') from dual;
或
select  to_date(col,'YYYY-MM-DD') from tab;


示例

將emp的hiredate欄位轉換為字元



八、upper()


說明

將字串或者欄位值全部轉換為大寫


基本語法

select upper('xxxx') from dual;
或
select  upper(col) from tab;


示例

轉換字串大寫



九、lower()


說明

將字串或者欄位值全部轉換為小寫


基本語法

select lower('xxxx') from dual;
或
select  lower(col) from tab;


示例

將emp表的job欄位轉換為小寫



十、sum()


說明

  1. 求出數值欄位型別一列的總和

  2. 只能傳入一個欄位進行求和


基本語法

select  sum(col) from tab;


示例

求出emp所有人的工資總和


十一 count()

說明

  1. 統計檢索結果的返回條數

  2. 根據不同的條件返回結果數不同,如果沒有條件則代表統計全表條數


基本語法

select  count(*) from tab;
或
select  count(*) from tab where col1>'xxxxx';


示例1

統計emp表總數

示例2

統計部門編號為20的所有員工數




十二、distinct

說明

  1. 消除一列中重複的值

  2. 可以有多個欄位,確保組合值是唯一的


基本語法

select  distinct col [,col1,col2...] from tab;


示例1

消除emp表中mgr重複的


示例2

消除emp表中mgr和job重複的



十三、group by 

說明

  1. 用來分組顯示,每個組和確保是唯一的

  2. 分組在查詢末尾用,查詢的欄位必須是分組的欄位

  3. 如果用來分組統計可以用having 來過濾統計結果


基本語法

select   col1 [col2,col3...] from tab group by col1 [col2,col3...]  [having....];



示例1

用來查詢分組emp表的mgr和job欄位

示例2

統計分組

(統計每個部門中有多少員工)


示例3

統計過濾

(按照上述統計過濾結果大於4的)





    寫在最後,這些函式都是oracle自帶的一些常用的基本函式,通過函式得到我們想要的結果是非常便捷的。希望能跟各位朋友多交流oracle知識。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20893138/viewspace-2660804/,如需轉載,請註明出處,否則將追究法律責任。

相關文章