Oracle 常用的函式

2021-07-12 04:55:38 字數 4234 閱讀 2624

/*常用的偽列有rowid和rownum*/

select rowid, orders.* from orders;

--orders表的結果

create table orders

(c1  number(5) not null,

c10 number(20) not null,

c20 varchar2(20) not null

)--orders表的資料

insert into orders (c1, c10, c20)

values (1, 2, 'sa');

insert into orders (c1, c10, c20)

values (1, 2, 'sa');

insert into orders (c1, c10, c20)

values (1, 2, 'sa');

insert into orders (c1, c10, c20)

values (1, 2, 'sa');

insert into orders (c1, c10, c20)

values (2, 3, 'oop');

insert into orders (c1, c10, c20)

values (1, 2, 'sa');

insert into orders (c1, c10, c20)

values (1, 2, 'sa');

insert into orders (c1, c10, c20)

values (1, 2, 'sa');

insert into orders (c1, c10, c20)

values (2, 3, 'oop');

insert into orders (c1, c10, c20)

values (2, 3, 'oop');

insert into orders (c1, c10, c20)

values (2, 3, 'oop');

insert into orders (c1, c10, c20)

values (2, 3, 'oop');

insert into orders (c1, c10, c20)

values (1, 2, 'sa');

commit;

--1)重複查詢資料

select *from orders group by c1,c10,c20

select distinct * from orders;

select * from orders o where rowid=

(select max(rowid) from orders oo where oo.c1=o.c1 and oo.c10=o.c10 and oo.c20=o.c20)

select * from orders o where rowid in

(select max(rowid) from orders group by c1,c10,c20)

--2)刪除重複的資料

select rowid, orders.* from orders;

delete from orders 

where rowid not in

(select max(rowid) from orders group by c1,c10,c20)

/*  集合操作符

union(聯合)

union all(聯合所有)

intersect(交集)

minus(減集)*/

如果選擇列表中包含有表示式或者函式,那麼必須為表示式或函式定義列別名

--1、uinon:無重並集,並以第一列的結果進行公升序排序

select *from emp where deptno=10

union 

select * from emp where sal>500

--2、uinon all:有重並集,不對結果集排序

select *from emp where deptno=10

union all

select * from emp where sal>500

--3、intersect:交集,只返回兩個查詢共同返回的行

select *from emp where deptno=10

intersect 

select * from emp where sal>500

--4、minus:差集,採用第乙個查詢返回的行,減去第二個查詢中也同樣返回的行,最後返回剩下的行

select * from emp where sal>500  --15 

minus 

select *from emp where deptno=10  --3

/*連線操作符*/

select 'aaa'||1001 from dual

--(一)轉換函式將值從一種資料型別轉換為另一種資料型別

--常用的轉換函式

--to_char (x[[c2],c3])【功能】將日期或資料轉換為char資料型別

/*x是乙個date或number資料型別。

c2為格式引數

c3為nls設定引數*/

select to_char(1210.73, '9999.999') from dual;

select to_char(1210.73, '$9,999.00') from dual;

select to_char(sysdate,'yyyy-mm-dd'),to_char(sysdate,'dl'),to_char(sysdate,'ds')from dual;

--to_date(x[,c2[,c3]])【功能】將字串x轉化為日期型

select to_date('201607','yyyymm'),to_date('2008-12-31 12:31:30','yyyy-mm-dd hh24:mi:ss')

from dual;

--to_number(x[[,c2],c3])【功能】將字串x轉化為數字型

select to_number('199912')+10,to_number('450.05') from dual;

--查詢僱傭日期》1981 的員工資訊

select * from emp;

--oracle有預設的日期格式(日-月-年)

select * from emp where hiredate>'20-12月-1981'

--to_char

select * from emp where to_char(hiredate,'ds')>'1982-01-23'

--員工編號與姓名連在一起

select empno||'_'||ename,sal+comm from emp;

/*轉換空值的函式

nvl 

nvl2

decode*/

/*【語法】nvl (expr1, expr2)

【功能】若expr1為null,返回expr2;expr1不為null,返回expr1。*/

select nvl('','xx'),nvl('aa','xx') from dual;

select * from orders 

select c20,nvl(c20,'empty') from orders;

/*【語法】nvl2 (expr1, expr2, expr3) 

【功能】expr1不為null,返回expr2;expr2為null,返回expr3。

expr2和expr3型別不同的話,expr3會轉換為expr2的型別 */

select nvl2('','xx','john'),nvl2('aa','xx','john') from dual;

select c20,nvl2(c20,c20,'null') from orders;

/*decode(條件,值1,翻譯值1,值2,翻譯值2,...值n,翻譯值n,預設值)

【功能】根據條件返回相應值

【引數】c1, c2, ...,cn,字元型/數值型/日期型,必須型別相同或null

注:值1……n 不能為條件表示式,這種情況只能用case when then end解決*/

select c20,decode(c20,'oop','oop','sa','sa','aa','aa','empty') from orders;

select emp.* ,decode(deptno,'10','財務部','20','公關部','30','銷售部') from emp;

Oracle常用的函式

1 判斷表是否存在 create or replace function public f is table exist v table en name character varying 8000 char returns integer as i count int default 0 begi...

Oracle常用的函式

1 把date資料轉為特定輸出型的字串 2 處理數字型資料 9相當於萬用字元 最終值是 日期 月數量,資料型別也是date型。一般月數量為負數,舉個例子 從employ表查詢列出來公司就職時間超過24年的員工名單,但是表中只有就職起始日期,所以需要用到這個函式了。select name,startd...

oracle的常用函式

1.nvl nvl函式的格式如下 nvl expr1,expr2 含義是 如果oracle第乙個引數expr1為空,那麼顯示第二個引數的值為expr2,如果第乙個引數的值expr1不為空,則顯示第乙個引數本來的值。2.nvl2 nvl2函式的格式如下 nvl2 expr1,expr2,expr3 含...