19個常用Oracle內(nèi)置函數(shù)

1. nvl(expression1, expression2)

函數(shù)作用:從兩個表達式中返回一個非null值

用例:select nvl(father_name, mother_name) parent_name from student where student_id = ‘12345’

注意:

?如果expression1的值非空,優(yōu)先取expression1的值;

如果expression1的值空且expression2的值非空,則取expression2的值;

如果expression1和expression2均為空,則結(jié)果為NULL

2. decode(field_name, value1, new_value1, value2, new_value2, default_value)

函數(shù)作用:類似if…else…語句塊,針對某個字段,如果它的值為value1,則轉(zhuǎn)換為newValue1,如果值為value2,則轉(zhuǎn)換為newValue2,其他情況顯示默認值

用例:select decode(id,’1′,’A’,’2′,’B’,id) from A;

注意:

?decode(field_name, value1, new_value1, value2, new_value2, default_value)其中的value1,newValue1等可以是一個表達式

3. row_number(order by field_name)

函數(shù)作用:將數(shù)據(jù)集按照某個字段排序,并產(chǎn)生序號字段

用例:select row_number() over(order by name) no,id,name from a;

4. to_date(source_string, formater_string)

函數(shù)作用:將字符串轉(zhuǎn)換為日期類型

用例:select to_date(‘20190809′,’yyyyMMdd’) from dual;

注意:

‘yyyyMMdd’,’yyyymmdd’,’yyyy-MM-dd’,’yyyy-mm-dd’都可以

5. to_char()

函數(shù)作用:將其他類型轉(zhuǎn)換為字符串類型

用例1:select to_char(sysdate, ‘yyyymmdd’) from dual

用例2:select to_char(99, ‘fm999.00’) from dual

注意:

用例1中還有很多其他的日期格式,如yyyy,mm,dd,D,DD,DDD等

用例2中fm,9,0都有不同的含義,如下表所示

字符標(biāo)志 含義
9 如果存在數(shù)字則顯示數(shù)字,不存在則顯示空格
0 如果存在數(shù)字則顯示數(shù)字,不存在則顯示0,即占位符
fm 刪除因為9帶來的空格

6. wm_concat

函數(shù)作用:行轉(zhuǎn)列,將多行查詢結(jié)果聚合到一行的某一列中

用例:select wm_concat(distinct name) from student

注意:高版本oracle可能會去掉

7. listagg() within group(order by field_name) over(partition by field_name)

函數(shù)作用:同wm_concat

用例:select listagg(distinct name) within group(order by name desc) from student

8. concat(expression1, expression2)

函數(shù)作用:字符串拼接函數(shù)

用例:select concat(‘left’, ‘Right’) from dual

注意:也可以利用 || 進行拼接,select ‘a’||’b’ from dual

9. sys_guid()

函數(shù)作用:產(chǎn)生并返回一個全球唯一的標(biāo)識符(原始值)由16個字節(jié)組成,32個字符

用例:select sys_guid() from dual;

注意:經(jīng)常用來做表的主鍵

10. over(partition by field_name, order by field_name)

函數(shù)作用:over函數(shù)是一個分析函數(shù),和聚合函數(shù)搭配在一起使用可以簡潔代碼

用例:

select?name,?job,?sal,?deptno, sum(sal)?over(partition?by?deptno)?sum_sal,?????--統(tǒng)計某組中的總計值 avg(sal)?over(partition?by?deptno)?avg_sal,?????--統(tǒng)計某組中的平均值 from?emp;

注意:按照以前的寫法先進分組統(tǒng)計產(chǎn)生臨時表關(guān)聯(lián)原表才可以取到其他信息,現(xiàn)在則不需要了

通常和max(),min(),avg(),sum()等聚合函數(shù)一起使用

11. nlssort

函數(shù)作用:提供簡體中文的特殊排序

用例:

select?*?from?student?order?by?nlssort(name,?'nls_sort?=?schinese_pinyin_m')?--拼音 select?*?from?team?order?by?nlssort(name,?'nls_sort?=?schinese_stroke_m')????--筆畫 select?*?from?team?order?by?nlssort(name,?'nls_sort?=?schinese_radical_m')???--部首

12. trunc

函數(shù)作用:是截取日期或數(shù)字,根據(jù)規(guī)則返回指定的值

用例1:select trunc(sysdate, ‘yyyy’) from dual

用例2:select trunc(126.56, 0) from dual

注意:

用例1還有其他規(guī)則代表不同的含義

規(guī)則 含義
mm 返回當(dāng)月第一天
yy 返回當(dāng)年第一天
dd 返回當(dāng)前年月日
yyyy 返回當(dāng)年第一天
d 返回當(dāng)前星期的第一天

用例2還有其他規(guī)則代表不同含義

規(guī)則 含義
0 默認值,取下取整
正數(shù)a 保留小數(shù)點后面a位小數(shù),其他的抹掉,如果a比小數(shù)點后的位數(shù)多,則保留原值
負數(shù)b 小數(shù)點后面的全部去掉,小數(shù)點向左移動abs(b)位,用0代替被抹掉的數(shù)字,如果所有數(shù)字都被抹掉,則返回0

13. rank() over(partition by field_name order by field_name)

函數(shù)作用:讓返回結(jié)果根據(jù)分區(qū)和排序字段產(chǎn)生排名關(guān)系

用例:select rank() over(partition by birthday order by score), s.* from student s;

注意:dense_rank()用法和rank()一樣,區(qū)別在于排名是否跳躍

14. substr(source, start [,length])

函數(shù)作用:截取字符串

用例:select substr(‘abcde’, 2, 3) from dual

注意:oracle字符串索引從1開始

15. replace(field_name, sub_str, replace_str)

函數(shù)作用:將指定的字符串替換為指定的字符串

用例:select replace(name, ‘hello’, ‘world’) from student;

注意:也可以用在update語句set部分

16. trim

函數(shù)作用:去掉左右兩端的空白字符

用例:select trim(‘ dsf ‘) from dual;

注意:僅去掉左邊空白字符用ltrim,僅去掉右邊空白字符用rtrim

17. sign

函數(shù)作用:取數(shù)字n的符號,大于0返回1, 小于0返回-1, 等于0返回0

用例:select sign(50),sign(-100),sign(0) from dual;

18. round(number[,decimal])

函數(shù)作用:對數(shù)字n進行四舍五入處理,保留decimal位小數(shù)

用例:select round(123.34),round(123.51),round(123.56,1),round(123.34,-1) from dual;

19. coalesce(expression1,expression2…)

函數(shù)作用:返回表達式中第一個不為空的值,如果全為空則返回空值

用例:select coalesce(null,3+5,4+6) value from dual;

推薦教程:《Oracle教程

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊10 分享