Oacle 상용 함수 와 조건

2014-04-06
1.  select  
##    
SQL> select * from emp;
##      (    ;     )
SQL>select empo,ename,job from emp;
SQL>conn hr/hr
SQL> select object_name from user_objects where object_type ='TABLE';
OBJECT_NAME
--------------------------------------------------------------------------------
COUNTRIES
DEPARTMENTS
EMPLOYEES
JOBS
JOB_HISTORY
LOCATIONS
REGIONS
2.     
//    :=,>,<,>=,<=,!=/<>,between...and      ,in       ,like         ,is null/not null       
//    :and or not
//  :desc(  ) asc(    )
  :  ,        ,   A-Z,      ASCII    ,     ;    
##  department_id 10
SQL> select * from departments where department_id=10;
##OR   
HR@orcl 09:04:03> select employee_id,job_id from employees where salary>5000 and job_id in ('SA_REP','AD_PRES');
HR@orcl 09:04:19> select employee_id,job_id from employees where salary>5000 and (job_id='SA_REP' OR job_id='AD_PRES');
##     
HR@orcl 09:04:56> select first_name ||' '||last_name name,(12*salary) salaries from employees order by salaries;

HR@orcl 10:04:42> select concat(concat(first_name,' '),last_name) name,(12*salay) salaries from employees order by salaries;

##    
HR@orcl 09:04:39> select job_id,first_name ||' '||last_name name,(12*salary) salaries from employees order by job_id,salaries;
##  ASCII 
HR@orcl 09:04:42> select ascii('A') from dual;
ASCII('A')
----------
	65

HR@orcl 09:04:11> select ascii('a') from dual;
ASCII('A')
----------
	97
##rowid
HR@orcl 09:04:16> select job_id,rowid from employees; --rowid    
3.    
##       
HR@orcl 09:04:29> select * from user_role_privs;
USERNAME		       GRANTED_ROLE		      ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
HR			       CONNECT			      NO  YES NO
HR			       RESOURCE 		      NO  YES NO
4.        
##  
HR@orcl 09:04:44> select upper('cc') from dual;
##  
HR@orcl 09:04:19> select lower('D') from dual;
##       
HR@orcl 09:04:46> select initcap('xiao') from dual;
##  
HR@orcl 10:04:43> select substr('wangxiaoqian',3,4) from dual;
SUBS
----
ngxi

HR@orcl 10:04:23> select substr('wangxiaoqian',3) from dual;
SUBSTR('WA
----------
ngxiaoqian
##       
HR@orcl 10:04:33> select length('wangxiaoqian') from dual;
LENGTH('WANGXIAOQIAN')
----------------------
		    12
##instr(c1,c2,[n1,n2])
  c2 c1    ,c1     ,c2        ,n1       ,n2       
HR@orcl 10:04:43> select instr('corporate','or',1,2) from dual;
INSTR('CORPORATE','OR',1,2)
---------------------------
                      5
---   n1,n2,         			 
HR@orcl 10:04:58> select instr('corporate','or') from dual;
INSTR('CORPORATE','OR')
-----------------------
		      2
##lpad(c1,n[,c2])     n    
  n<c1,                ;
HR@orcl 10:04:17> select lpad('hshjsjdjkd',5) from dual;
LPAD(
-----
hshjs

HR@orcl 10:04:36> select lpad('hshjsjdjkd',5,'*') from dual;
LPAD(
-----
hshjs
  n>c1,c2  ,              n   
HR@orcl 10:04:14> select lpad('h',5) from dual;
LPAD(
-----
    h
  n>c1,c2   ,     c2         c1 n   
HR@orcl 10:04:45> select lpad('h',5,'*') from dual;
LPAD(
-----
****h
##rpad
HR@orcl 11:04:09> create table ssr(name varchar2(200));
HR@orcl 11:04:37> insert into ssr(name) values(lpad('shiwei',200,'ha')); 
HR@orcl 11:04:06> insert into ssr(name) select rpad('ha',200,'s') from dual;
##trim([[leading|trailing|both]) trim_character from] trim_source)
leading:     trim_character
trailing:     trim_character
both:     trim_character
HR@orcl 11:04:02> select trim(both 'w' from 'wanwianw') from dual;
TRIM(B
------
anwian
trim(trim_source):        ,     trim_source  
HR@orcl 11:04:04> select length(trim('   ha    ')) from dual;
LENGTH(TRIM('HA'))
------------------
		 2

##  BI/PM/IX/SH/OE
        :
SELECT product_name, LTRIM(product_name, 'Monitor ') "Short Name"  FROM products WHERE product_name LIKE 'Monitor%';
##replace(c,search_string[,replacement_string])
replace(c1,c2[,c3]): c1     c2   c3,  c3 NULL,  c1     c2
SQL> select replace(first_name,'teven','shiwei') from employees where first_name='Steven';
REPLACE(FIRST_NAME,'TEVEN','SHIWEI')
--------------------------------------------------------------------------------
Sshiwei
Sshiwei

SQL> select replace(first_name,'teven') from employees where first_name='Steven';
REPLACE(FIRST_NAME,'
--------------------
S
S
5.    
##round(n1[,n2]):      
OE@orcl 02:04:49> select round(23.56),round(23.35),round(12.45,1),round(12.55,1) from dual;
ROUND(23.56) ROUND(23.35) ROUND(12.45,1) ROUND(12.55,-1)
------------ ------------ -------------- ---------------
	  24	       23	    12.5	      10

OE@orcl 02:04:00> select round(588,-2) from dual;
ROUND(588,-2)
-------------
	  600
##trunc(n1[,n2]):     n2    n1 ,n2    0,n2   ,             
OE@orcl 02:04:09> select trunc(56.67),trunc(56.67,1),trunc(56.67,-1),trunc(56.7,-2) from dual;

TRUNC(56.67) TRUNC(56.67,1) TRUNC(56.67,-1) TRUNC(56.67,-2)
------------ -------------- --------------- ---------------
	  56	       56.6		 50		  0
##mod:  
SQL> select mod(3,2),mod(8,4) from dual;

OE@orcl 02:04:42> select mod(11,4),mod(11,-4),mod(-11,4),mod(-11,-4)  from dual;
 MOD(11,4) MOD(11,-4) MOD(-11,4) MOD(-11,-4)
---------- ---------- ---------- -----------
	 3	    3	      -3	  -3
6.    
##add_months(d,n):       N          
OE@orcl 02:04:25> select add_months(sysdate,2) from dual;

SQL>select next_day(sysdate,'TUESDAY')  from dual;
HR@orcl 14:04:06-03:16:12> select hire_date from employees where hire_date='23-MAY-06';

HR@orcl 14:04:06-03:16:13> select to_date('2014-04-06','yyyy-mm-dd') c_date from dual;
alter session set nls_date_format ="yyyy-mm-dd";

    
to_char()
to_date()
to_number()
to_timestamp()
7.    
nvl(expr1,expr2)  expr1 NULL,   expr2;  expr1  NULL,   expr1;
SQL>select last_name,nvl(commission_pct,0) from employees where last_name like 'B%';

nvl2(c1,c2,c3)  c1 null,   c3,  ,  c2.
HR@orcl 14:04:06-03:50:55> select last_name,nvl2(commission_pct,salary+salarycommission_pct,salary) nvl  from employees where last_name like 'B%';
8.     
1)case
##simple case
sql>select last_name,job_id,salary,case job_id when 'IT_PROG' then 1.10*salary  
when 'ST_CLERK' then 1.15 * salary
when 'SA_REP' then 1.20 * salary
else salary  end "tz_salary"  from employees;
##search case 
HR@orcl 14:04:06-04:24:19> select last_name,case when salary>3000 then salaryelse 3000 end "add_salary" from employees;
2)decode
##simple decode
select last_name,job_id,salary,decode(job_id,'IT_PORG',1.10*salary,'ST_CLERK',1.15*salary,'SA_REP',
1.2*salary,salary) "add_salary" from employees;

좋은 웹페이지 즐겨찾기