Monday, September 2, 2013

SQL Lect 2

SQL> select lower(last_name), upper(last_name), initcap(last_name)
  2  from employees
  3  where employee_id<120;

LOWER(LAST_NAME)          UPPER(LAST_NAME)          INITCAP(LAST_NAME)         
------------------------- ------------------------- -------------------------  
king                      KING                      King                       
kochhar                   KOCHHAR                   Kochhar                    
de haan                   DE HAAN                   De Haan                    
hunold                    HUNOLD                    Hunold                     
ernst                     ERNST                     Ernst                      
austin                    AUSTIN                    Austin                     
pataballa                 PATABALLA                 Pataballa                  
lorentz                   LORENTZ                   Lorentz                    
greenberg                 GREENBERG                 Greenberg                  
faviet                    FAVIET                    Faviet                     
chen                      CHEN                      Chen                       

LOWER(LAST_NAME)          UPPER(LAST_NAME)          INITCAP(LAST_NAME)         
------------------------- ------------------------- -------------------------  
sciarra                   SCIARRA                   Sciarra                    
urman                     URMAN                     Urman                      
popp                      POPP                      Popp                       
raphaely                  RAPHAELY                  Raphaely                   
khoo                      KHOO                      Khoo                       
baida                     BAIDA                     Baida                      
tobias                    TOBIAS                    Tobias                     
himuro                    HIMURO                    Himuro                     
colmenares                COLMENARES                Colmenares                 

20 rows selected.

SQL> select concat(last_name, first_name)
  2  from employees
  3  where employee_id<110;

CONCAT(LAST_NAME,FIRST_NAME)                                                   
---------------------------------------------                                  
KingSteven                                                                     
KochharNeena                                                                   
De HaanLex                                                                     
HunoldAlexander                                                                
ErnstBruce                                                                     
AustinDavid                                                                    
PataballaValli                                                                 
LorentzDiana                                                                   
GreenbergNancy                                                                 
FavietDaniel                                                                   

10 rows selected.

SQL> define_editor=vi
SQL> ed
Wrote file afiedt.buf

  1  select concat(concat(last_name,' '), first_name)
  2  from employees
  3* where employee_id<110
SQL> /

CONCAT(CONCAT(LAST_NAME,''),FIRST_NAME)                                        
----------------------------------------------                                 
King Steven                                                                    
Kochhar Neena                                                                  
De Haan Lex                                                                    
Hunold Alexander                                                               
Ernst Bruce                                                                    
Austin David                                                                   
Pataballa Valli                                                                
Lorentz Diana                                                                  
Greenberg Nancy                                                                
Faviet Daniel                                                                  

10 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  select substr( concat(concat(last_name,' '), first_name),3,6)
  2  from employees
  3* where employee_id<110
SQL> /

SUBSTR                                                                         
------                                                                         
ng Ste                                                                         
chhar                                                                          
 Haan                                                                          
nold A                                                                         
nst Br                                                                         
stin D                                                                         
taball                                                                         
rentz                                                                          
eenber                                                                         
viet D                                                                         

10 rows selected.

SQL> select last_name, substr(last_name,2,4)
  2  from employees
  3  where employee_id<110;

LAST_NAME                 SUBS                                                 
------------------------- ----                                                 
King                      ing                                                  
Kochhar                   ochh                                                 
De Haan                   e Ha                                                 
Hunold                    unol                                                 
Ernst                     rnst                                                 
Austin                    usti                                                 
Pataballa                 atab                                                 
Lorentz                   oren                                                 
Greenberg                 reen                                                 
Faviet                    avie                                                 

10 rows selected.

SQL> select last_name, length(last_name)
  2  from employees
  3  where employee_id<110;

LAST_NAME                 LENGTH(LAST_NAME)                                    
------------------------- -----------------                                    
King                                      4                                    
Kochhar                                   7                                    
De Haan                                   7                                    
Hunold                                    6                                    
Ernst                                     5                                    
Austin                                    6                                    
Pataballa                                 9                                    
Lorentz                                   7                                    
Greenberg                                 9                                    
Faviet                                    6                                    

10 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  select last_name, length(last_name)
  2  from employees
  3* where length(last_name)>5
SQL> /

LAST_NAME                 LENGTH(LAST_NAME)                                    
------------------------- -----------------                                    
Atkinson                                  8                                    
Austin                                    6                                    
Bernstein                                 9                                    
Bissot                                    6                                    
Cabrio                                    6                                    
Cambrault                                 9                                    
Cambrault                                 9                                    
Colmenares                               10                                    
Davies                                    6                                    
De Haan                                   7                                    
Dellinger                                 9                                    

LAST_NAME                 LENGTH(LAST_NAME)                                    
------------------------- -----------------                                    
Errazuriz                                 9                                    
Everett                                   7                                    
Faviet                                    6                                    
Feeney                                    6                                    
Fleaur                                    6                                    
Greenberg                                 9                                    
Greene                                    6                                    
Hartstein                                 9                                    
Higgins                                   7                                    
Himuro                                    6                                    
Hunold                                    6                                    

LAST_NAME                 LENGTH(LAST_NAME)                                    
------------------------- -----------------                                    
Hutton                                    6                                    
Johnson                                   7                                    
Kaufling                                  8                                    
Kochhar                                   7                                    
Ladwig                                    6                                    
Landry                                    6                                    
Livingston                               10                                    
Lorentz                                   7                                    
Mallin                                    6                                    
Markle                                    6                                    
Marlow                                    6                                    

LAST_NAME                 LENGTH(LAST_NAME)                                    
------------------------- -----------------                                    
Marvins                                   7                                    
Mavris                                    6                                    
McCain                                    6                                    
McEwen                                    6                                    
Mikkilineni                              11                                    
Mourgos                                   7                                    
OConnell                                  8                                    
Partners                                  8                                    
Pataballa                                 9                                    
Perkins                                   7                                    
Philtanker                               10                                    

LAST_NAME                 LENGTH(LAST_NAME)                                    
------------------------- -----------------                                    
Raphaely                                  8                                    
Rogers                                    6                                    
Russell                                   7                                    
Sarchand                                  8                                    
Sciarra                                   7                                    
Sewall                                    6                                    
Stiles                                    6                                    
Sullivan                                  8                                    
Taylor                                    6                                    
Taylor                                    6                                    
Tobias                                    6                                    

LAST_NAME                 LENGTH(LAST_NAME)                                    
------------------------- -----------------                                    
Tucker                                    6                                    
Tuvault                                   7                                    
Vargas                                    6                                    
Vishney                                   7                                    
Vollman                                   7                                    
Whalen                                    6                                    
Zlotkey                                   7                                    

62 rows selected.

SQL> select last_name, instr(last_name, 'a')
  2  from employees
  3  where employee_id<110;

LAST_NAME                 INSTR(LAST_NAME,'A')                                 
------------------------- --------------------                                 
King                                         0                                 
Kochhar                                      6                                 
De Haan                                      5                                 
Hunold                                       0                                 
Ernst                                        0                                 
Austin                                       0                                 
Pataballa                                    2                                 
Lorentz                                      0                                 
Greenberg                                    0                                 
Faviet                                       2                                 

10 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  select last_name, instr(last_name, 'a',1,2)
  2  from employees
  3* where employee_id<110
SQL> /

LAST_NAME                 INSTR(LAST_NAME,'A',1,2)                             
------------------------- ------------------------                             
King                                             0                             
Kochhar                                          0                             
De Haan                                          6                             
Hunold                                           0                             
Ernst                                            0                             
Austin                                           0                             
Pataballa                                        4                             
Lorentz                                          0                             
Greenberg                                        0                             
Faviet                                           0                             

10 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  select last_name, instr(last_name, 'a',1,2)
  2  from employees
  3* where employee_id<110
SQL> select last_name, lpad(last_name, 10, '*')
  2  from employees
  3  where employee_id<110;

LAST_NAME                 LPAD(LAST_                                           
------------------------- ----------                                           
King                      ******King                                           
Kochhar                   ***Kochhar                                           
De Haan                   ***De Haan                                           
Hunold                    ****Hunold                                           
Ernst                     *****Ernst                                           
Austin                    ****Austin                                           
Pataballa                 *Pataballa                                           
Lorentz                   ***Lorentz                                           
Greenberg                 *Greenberg                                           
Faviet                    ****Faviet                                           

10 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  select last_name, rpad(last_name, 10, '*')
  2  from employees
  3* where employee_id<110
SQL> /

LAST_NAME                 RPAD(LAST_                                           
------------------------- ----------                                           
King                      King******                                           
Kochhar                   Kochhar***                                           
De Haan                   De Haan***                                           
Hunold                    Hunold****                                           
Ernst                     Ernst*****                                           
Austin                    Austin****                                           
Pataballa                 Pataballa*                                           
Lorentz                   Lorentz***                                           
Greenberg                 Greenberg*                                           
Faviet                    Faviet****                                           

10 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  select last_name, rpad(last_name||first_name, 10, '*')
  2  from employees
  3* where employee_id<110
SQL> /

LAST_NAME                 RPAD(LAST_                                           
------------------------- ----------                                           
King                      KingSteven                                           
Kochhar                   KochharNee                                           
De Haan                   De HaanLex                                           
Hunold                    HunoldAlex                                           
Ernst                     ErnstBruce                                           
Austin                    AustinDavi                                           
Pataballa                 PataballaV                                           
Lorentz                   LorentzDia                                           
Greenberg                 GreenbergN                                           
Faviet                    FavietDani                                           

10 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  select last_name, rpad(last_name||first_name, 10, '*')
  2  from employees
  3* where employee_id<110
SQL> select trim('A' from last_name), last_name
  2  from employees
  3  where employee_id<110;

TRIM('A'FROMLAST_NAME)    LAST_NAME                                            
------------------------- -------------------------                            
King                      King                                                 
Kochhar                   Kochhar                                              
De Haan                   De Haan                                              
Hunold                    Hunold                                               
Ernst                     Ernst                                                
ustin                     Austin                                               
Pataballa                 Pataballa                                            
Lorentz                   Lorentz                                              
Greenberg                 Greenberg                                            
Faviet                    Faviet                                               

10 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  select trim('A' from upper(last_name)), last_name
  2  from employees
  3* where employee_id<110
SQL> /

TRIM('A'FROMUPPER(LAST_NA LAST_NAME                                            
------------------------- -------------------------                            
KING                      King                                                 
KOCHHAR                   Kochhar                                              
DE HAAN                   De Haan                                              
HUNOLD                    Hunold                                               
ERNST                     Ernst                                                
USTIN                     Austin                                               
PATABALL                  Pataballa                                            
LORENTZ                   Lorentz                                              
GREENBERG                 Greenberg                                            
FAVIET                    Faviet                                               

10 rows selected.

SQL> select replace(last_name, 'a','ank'), last_name
  2  from employees
  3  where last_name<110;
where last_name<110
      *
ERROR at line 3:
ORA-01722: invalid number


SQL> ed
Wrote file afiedt.buf

  1  select replace(last_name, 'a','ank'), last_name
  2  from employees
  3* where employee_id<110
SQL> /

REPLACE(LAST_NAME,'A','ANK')                                                   
---------------------------------------------------------------------------    
LAST_NAME                                                                      
-------------------------                                                      
King                                                                           
King                                                                           
                                                                               
Kochhankr                                                                      
Kochhar                                                                        
                                                                               
De Hankankn                                                                    
De Haan                                                                        
                                                                               

REPLACE(LAST_NAME,'A','ANK')                                                   
---------------------------------------------------------------------------    
LAST_NAME                                                                      
-------------------------                                                      
Hunold                                                                         
Hunold                                                                         
                                                                               
Ernst                                                                          
Ernst                                                                          
                                                                               
Austin                                                                         
Austin                                                                         
                                                                               

REPLACE(LAST_NAME,'A','ANK')                                                   
---------------------------------------------------------------------------    
LAST_NAME                                                                      
-------------------------                                                      
Panktankbankllank                                                              
Pataballa                                                                      
                                                                               
Lorentz                                                                        
Lorentz                                                                        
                                                                               
Greenberg                                                                      
Greenberg                                                                      
                                                                               

REPLACE(LAST_NAME,'A','ANK')                                                   
---------------------------------------------------------------------------    
LAST_NAME                                                                      
-------------------------                                                      
Fankviet                                                                       
Faviet                                                                         
                                                                               

10 rows selected.

SQL> select round(45.936,2), trunc(45.936,2), mod(12000,39)
  2  from dual;

ROUND(45.936,2) TRUNC(45.936,2) MOD(12000,39)                                  
--------------- --------------- -------------                                  
          45.94           45.93            27                                  

SQL> ed
Wrote file afiedt.buf

  1  select round(45.936,-1), trunc(45.936,-1), mod(12000,39)
  2* from dual
SQL> /

ROUND(45.936,-1) TRUNC(45.936,-1) MOD(12000,39)                                
---------------- ---------------- -------------                                
              50               40            27                                

SQL> ed
Wrote file afiedt.buf

  1  select round(45.936,-2), trunc(45.936,-2), mod(12000,39)
  2* from dual
SQL> /

ROUND(45.936,-2) TRUNC(45.936,-2) MOD(12000,39)                                
---------------- ---------------- -------------                                
               0                0            27                                

SQL> ed
Wrote file afiedt.buf

  1  select round(145.936,-2), trunc(145.936,-2), mod(12000,39)
  2* from dual
SQL> /

ROUND(145.936,-2) TRUNC(145.936,-2) MOD(12000,39)                              
----------------- ----------------- -------------                              
              100               100            27                              

SQL> ed
Wrote file afiedt.buf

  1  select round(165.936,-2), trunc(165.936,-2), mod(12000,39)
  2* from dual
SQL> /

ROUND(165.936,-2) TRUNC(165.936,-2) MOD(12000,39)                              
----------------- ----------------- -------------                              
              200               100            27                              

SQL> ed
Wrote file afiedt.buf

  1  select round(165.936,0), trunc(165.936,0), mod(12000,39)
  2* from dual
SQL> /

ROUND(165.936,0) TRUNC(165.936,0) MOD(12000,39)                                
---------------- ---------------- -------------                                
             166              165            27                                

SQL> select sysdate from dual;

SYSDATE                                                                        
---------                                                                      
30-AUG-13                                                                      

SQL> alter session set nls_date_format='DD-MON-RR HH24:MI:SS';

Session altered.

SQL> select sysdate from dual;

SYSDATE                                                                        
------------------                                                             
30-AUG-13 18:08:58                                                             

SQL> select sysdate+6 from dual;

SYSDATE+6                                                                      
------------------                                                             
05-SEP-13 18:09:39                                                             

SQL> select sysdate-'12-JAN-13' FROM DUAL;
select sysdate-'12-JAN-13' FROM DUAL
               *
ERROR at line 1:
ORA-01722: invalid number


SQL> ed
Wrote file afiedt.buf

  1* select sysdate-to_date('12-JAN-13','DD-MON-RR') FROM DUAL
SQL> /

SYSDATE-TO_DATE('12-JAN-13','DD-MON-RR')                                       
----------------------------------------                                       
                              230.757998                                       

SQL> select sysdate, sysdate+6/24 from dual;

SYSDATE            SYSDATE+6/24                                                
------------------ ------------------                                          
30-AUG-13 18:12:16 31-AUG-13 00:12:16                                          

SQL> select sysdate-hire_date "Experience"
  2  from dual;
select sysdate-hire_date "Experience"
               *
ERROR at line 1:
ORA-00904: "HIRE_DATE": invalid identifier


SQL> ed
Wrote file afiedt.buf

  1  select sysdate-hire_date "Experience"
  2* from employees
SQL> /

Experience                                                                     
----------                                                                     
 5184.7594                                                                     
 4978.7594                                                                     
 9479.7594                                                                     
 6404.7594                                                                     
 5857.7594                                                                     
 7024.7594                                                                     
 7024.7594                                                                     
 7024.7594                                                                     
 7024.7594                                                                     
 9571.7594                                                                     
 8744.7594                                                                     

Experience                                                                     
----------                                                                     
 7534.7594                                                                     
 8640.7594                                                                     
 8137.7594                                                                     
 5910.7594                                                                     
 5685.7594                                                                     
 5318.7594                                                                     
 6953.7594                                                                     
 6954.7594                                                                     
 5815.7594                                                                     
 5813.7594                                                                     
 5655.7594                                                                     

Experience                                                                     
----------                                                                     
 5015.7594                                                                     
 6841.7594                                                                     
 6679.7594                                                                     
 5728.7594                                                                     
 5881.7594                                                                     
 5402.7594                                                                     
 5134.7594                                                                     
 6252.7594                                                                     
 5986.7594                                                                     
 6696.7594                                                                     
 5803.7594                                                                     

Experience                                                                     
----------                                                                     
 5036.7594                                                                     
 5889.7594                                                                     
 5450.7594                                                                     
 5342.7594                                                                     
 4923.7594                                                                     
 5854.7594                                                                     
 5783.7594                                                                     
 6039.7594                                                                     
 5256.7594                                                                     
 6286.7594                                                                     
 5483.7594                                                                     

Experience                                                                     
----------                                                                     
 5010.7594                                                                     
 4954.7594                                                                     
 6622.7594                                                                     
 5787.7594                                                                     
 5678.7594                                                                     
 5625.7594                                                                     
 6527.7594                                                                     
 6057.7594                                                                     
 5647.7594                                                                     
 5531.7594                                                                     
 6177.7594                                                                     

Experience                                                                     
----------                                                                     
 6081.7594                                                                     
 6017.7594                                                                     
 5068.7594                                                                     
 4962.7594                                                                     
 6056.7594                                                                     
 6003.7594                                                                     
 5854.7594                                                                     
 5632.7594                                                                     
 5378.7594                                                                     
 5029.7594                                                                     
 6422.7594                                                                     

Experience                                                                     
----------                                                                     
 6388.7594                                                                     
 6238.7594                                                                     
 6017.7594                                                                     
 5737.7594                                                                     
 5414.7594                                                                     
 5771.7594                                                                     
 5278.7594                                                                     
 4967.7594                                                                     
 4937.7594                                                                     
 4907.7594                                                                     
 4879.7594                                                                     

Experience                                                                     
----------                                                                     
 6016.7594                                                                     
 5639.7594                                                                     
 5697.7594                                                                     
 5302.7594                                                                     
 5273.7594                                                                     
 4879.7594                                                                     
 6320.7594                                                                     
 6008.7594                                                                     
 5638.7594                                                                     
 5608.7594                                                                     
 5212.7594                                                                     

Experience                                                                     
----------                                                                     
 4987.7594                                                                     
 5697.7594                                                                     
 5667.7594                                                                     
 5184.7594                                                                     
 4957.7594                                                                     
 6425.7594                                                                     
 6035.7594                                                                     
 5546.7594                                                                     
 5318.7594                                                                     
 5921.7594                                                                     
 5861.7594                                                                     

Experience                                                                     
----------                                                                     
 5529.7594                                                                     
 5003.7594                                                                     
 6417.7594                                                                     
 6024.7594                                                                     
 5539.7594                                                                     
 5280.7594                                                                     
 5607.7594                                                                     
 5578.7594                                                                     

107 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  select months_between(sysdate,hire_date) "Experience"
  2  from employees
  3* where employee_id<110
SQL> /

Experience                                                                     
----------                                                                     
314.443892                                                                     
 287.31486                                                                     
247.572924                                                                     
283.895505                                                                     
 267.31486                                                                     
194.185827                                                                     
186.830989                                                                     
174.766473                                                                     
228.443892                                                                     
 228.47615                                                                     

10 rows selected.

SQL> select add_months(sysdate, 6), sysdate
  2  from dual;

ADD_MONTHS(SYSDATE SYSDATE                                                     
------------------ ------------------                                          
28-FEB-14 18:16:01 30-AUG-13 18:16:01                                          

SQL> select next_day(sysdate,'SATURDAY')
  2  from dual;

NEXT_DAY(SYSDATE,'                                                             
------------------                                                             
31-AUG-13 18:16:42                                                             

SQL> select last_day(sysdate) from dual;

LAST_DAY(SYSDATE)                                                              
------------------                                                             
31-AUG-13 18:17:23                                                             

SQL> select round(to_date('22-JUL-12','DD-MON-RR'),'MONTH')
  2  FROM DUAL;

ROUND(TO_DATE('22-                                                             
------------------                                                             
01-AUG-12 00:00:00                                                             

SQL> ed
Wrote file afiedt.buf

  1  select round(to_date('22-JUL-12','DD-MON-RR'),'YEAR')
  2* FROM DUAL
SQL> /

ROUND(TO_DATE('22-                                                             
------------------                                                             
01-JAN-13 00:00:00                                                             

SQL> ed
Wrote file afiedt.buf

  1  select trunc(to_date('22-JUL-12','DD-MON-RR'),'YEAR')
  2* FROM DUAL
SQL> /

TRUNC(TO_DATE('22-                                                             
------------------                                                             
01-JAN-12 00:00:00                                                             

SQL> ed
Wrote file afiedt.buf

  1  select trunc(to_date('22-JUL-12','DD-MON-RR'),'MONTH')
  2* FROM DUAL
SQL> /

TRUNC(TO_DATE('22-                                                             
------------------                                                             
01-JUL-12 00:00:00                                                             

SQL> select to_char(sysdate,'DD-MONTH-YYYY')
  2  FROM DUAL;

TO_CHAR(SYSDATE,'                                                              
-----------------                                                              
30-AUGUST   -2013                                                              

SQL> ed
Wrote file afiedt.buf

  1  select to_char(sysdate,'DDSP-MONTH-YYYY')
  2* FROM DUAL
SQL> /

TO_CHAR(SYSDATE,'DDSP-MONTH                                                    
---------------------------                                                    
THIRTY-AUGUST   -2013                                                          

SQL> ed
Wrote file afiedt.buf

  1  select to_char(sysdate,'DDSPTH-MONTH-YYYY')
  2* FROM DUAL
SQL> /

TO_CHAR(SYSDATE,'DDSPTH-MONTH                                                  
-----------------------------                                                  
THIRTIETH-AUGUST   -2013                                                       

SQL> ed
Wrote file afiedt.buf

  1  select to_char(sysdate,'DDSPTH-MONTH-YEAR')
  2* FROM DUAL
SQL> /

TO_CHAR(SYSDATE,'DDSPTH-MONTH-YEAR')                                           
-------------------------------------------------------------------            
THIRTIETH-AUGUST   -TWENTY THIRTEEN                                            

SQL> ed
Wrote file afiedt.buf

  1  select to_char(sysdate,'DDSPTH-MONTH-YYYYSP')
  2* FROM DUAL
SQL> /

TO_CHAR(SYSDATE,'DDSPTH-MONTH-YYYYSP')                                         
-------------------------------------------------------------------            
THIRTIETH-AUGUST   -TWO THOUSAND THIRTEEN                                      

SQL> ed
Wrote file afiedt.buf

  1  select to_char(sysdate,'DDSPTH-MONTH-YYYYSP DAY')
  2* FROM DUAL
SQL> /

TO_CHAR(SYSDATE,'DDSPTH-MONTH-YYYYSPDAY')                                      
-----------------------------------------------------------------------------  
THIRTIETH-AUGUST   -TWO THOUSAND THIRTEEN FRIDAY                               

SQL> select to_char(sysdate,'J')
  2  FROM DUAL;

TO_CHAR                                                                        
-------                                                                        
2456535                                                                        

SQL> ed
Wrote file afiedt.buf

  1  select to_char(sysdate,'J')/365.25
  2* FROM DUAL
SQL> /

TO_CHAR(SYSDATE,'J')/365.25                                                    
---------------------------                                                    
                 6725.62628                                                    

SQL> ed
Wrote file afiedt.buf

  1  select to_char(sysdate,'SSSSS')
  2* FROM DUAL
SQL> /

TO_CH                                                                          
-----                                                                          
66675                                                                          

SQL> ed
Wrote file afiedt.buf

  1  select to_number(sysdate,'SSSSS')
  2* FROM DUAL
SQL> /
select to_number(sysdate,'SSSSS')
                         *
ERROR at line 1:
ORA-01481: invalid number format model


SQL> ed
Wrote file afiedt.buf

  1  select to_char(17895,'99G999D99')
  2* FROM DUAL
SQL> /

TO_CHAR(17                                                                     
----------                                                                     
 17,895.00                                                                     

SQL> ed
Wrote file afiedt.buf

  1  select to_char(17895,'99G999D99')
  2* FROM DUAL
SQL> select to_char(salary,'L999G999D99')
  2  FROM EMPLOYEES
  3  WHERE EMPLOYEE_ID<105;

TO_CHAR(SALARY,'L999G                                                          
---------------------                                                          
           $24,000.00                                                          
           $17,000.00                                                          
           $17,000.00                                                          
            $9,000.00                                                          
            $6,000.00                                                          

SQL> select '$12,456.66'-34 from dual;
select '$12,456.66'-34 from dual
       *
ERROR at line 1:
ORA-01722: invalid number


SQL> ed
Wrote file afiedt.buf

  1* select to_number('$12,456.66','L99G999D99')-34 from dual
SQL> /

TO_NUMBER('$12,456.66','L99G999D99')-34                                        
---------------------------------------                                        
                               12422.66                                        

SQL> select salary*commission_pct from employees
  2  where employee_id<105;

SALARY*COMMISSION_PCT                                                          
---------------------                                                          
null                                                                           
null                                                                           
null                                                                           
null                                                                           
null                                                                           

SQL> ed
Wrote file afiedt.buf

  1  select salary*commission_pct, salary, commission_pct from employees
  2* where employee_id<105
SQL> /

SALARY*COMMISSION_PCT     SALARY COMMISSION_PCT                                
--------------------- ---------- --------------                                
null                       24000 null                                          
null                       17000 null                                          
null                       17000 null                                          
null                        9000 null                                          
null                        6000 null                                          

SQL> ed
Wrote file afiedt.buf

  1  select salary*nvl(commission_pct,0), salary, commission_pct from employees
  2* where employee_id<105
SQL> /

SALARY*NVL(COMMISSION_PCT,0)     SALARY COMMISSION_PCT                         
---------------------------- ---------- --------------                         
                           0      24000 null                                   
                           0      17000 null                                   
                           0      17000 null                                   
                           0       9000 null                                   
                           0       6000 null                                   

SQL> ed
Wrote file afiedt.buf

  1  select salary+salary*nvl(commission_pct,0), salary, commission_pct from employees
  2* where employee_id<105
SQL> /

SALARY+SALARY*NVL(COMMISSION_PCT,0)     SALARY COMMISSION_PCT                  
----------------------------------- ---------- --------------                  
                              24000      24000 null                            
                              17000      17000 null                            
                              17000      17000 null                            
                               9000       9000 null                            
                               6000       6000 null                            

SQL> ed
Wrote file afiedt.buf

  1  select salary+salary*nvl(commission_pct,0), salary, commission_pct from employees
  2* where employee_id<110
SQL> /

SALARY+SALARY*NVL(COMMISSION_PCT,0)     SALARY COMMISSION_PCT                  
----------------------------------- ---------- --------------                  
                              24000      24000 null                            
                              17000      17000 null                            
                              17000      17000 null                            
                               9000       9000 null                            
                               6000       6000 null                            
                               4800       4800 null                            
                               4800       4800 null                            
                               4200       4200 null                            
                              12000      12000 null                            
                               9000       9000 null                            

10 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  select salary+salary*nvl(commission_pct,0), salary, commission_pct from employees
  2* where employee_id<110
SQL> ed
Wrote file afiedt.buf

  1  select nvl2(commission_pct, salary+salary*commission_pct, salary), salary, commission_pct from employees
  2* where employee_id>195
SQL> /

NVL2(COMMISSION_PCT,SALARY+SALARY*COMMISSION_PCT,SALARY)     SALARY            
-------------------------------------------------------- ----------            
COMMISSION_PCT                                                                 
--------------                                                                 
                                                    3100       3100            
null                                                                           
                                                                               
                                                    3000       3000            
null                                                                           
                                                                               
                                                    2600       2600            
null                                                                           
                                                                               

NVL2(COMMISSION_PCT,SALARY+SALARY*COMMISSION_PCT,SALARY)     SALARY            
-------------------------------------------------------- ----------            
COMMISSION_PCT                                                                 
--------------                                                                 
                                                    2600       2600            
null                                                                           
                                                                               
                                                    4400       4400            
null                                                                           
                                                                               
                                                   13000      13000            
null                                                                           
                                                                               

NVL2(COMMISSION_PCT,SALARY+SALARY*COMMISSION_PCT,SALARY)     SALARY            
-------------------------------------------------------- ----------            
COMMISSION_PCT                                                                 
--------------                                                                 
                                                    6000       6000            
null                                                                           
                                                                               
                                                    6500       6500            
null                                                                           
                                                                               
                                                   10000      10000            
null                                                                           
                                                                               

NVL2(COMMISSION_PCT,SALARY+SALARY*COMMISSION_PCT,SALARY)     SALARY            
-------------------------------------------------------- ----------            
COMMISSION_PCT                                                                 
--------------                                                                 
                                                   12000      12000            
null                                                                           
                                                                               
                                                    8300       8300            
null                                                                           
                                                                               

11 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  select nvl2(commission_pct, salary+salary*commission_pct, salary) total, salary, commission_pct from employees
  2* where employee_id>195
SQL> /

     TOTAL     SALARY COMMISSION_PCT                                           
---------- ---------- --------------                                           
      3100       3100 null                                                     
      3000       3000 null                                                     
      2600       2600 null                                                     
      2600       2600 null                                                     
      4400       4400 null                                                     
     13000      13000 null                                                     
      6000       6000 null                                                     
      6500       6500 null                                                     
     10000      10000 null                                                     
     12000      12000 null                                                     
      8300       8300 null                                                     

11 rows selected.

SQL> select nullif(length(first_name),length(last_name))
  2  from employees;

NULLIF(LENGTH(FIRST_NAME),LENGTH(LAST_NAME))                                   
--------------------------------------------                                   
                                           5                                   
                                           6                                   
                                           5                                   
                                           5                                   
                                           7                                   
                                           6                                   
                                           4                                   
                                           9                                   
                                           5                                   
                                           5                                   
                                           5                                   

NULLIF(LENGTH(FIRST_NAME),LENGTH(LAST_NAME))                                   
--------------------------------------------                                   
                                           8                                   
                                           6                                   
                                           7                                   
                                           6                                   
                                           7                                   
null                                                                           
null                                                                           
                                           5                                   
null                                                                           
                                           3                                   
                                           5                                   

NULLIF(LENGTH(FIRST_NAME),LENGTH(LAST_NAME))                                   
--------------------------------------------                                   
                                           8                                   
                                           6                                   
null                                                                           
                                           7                                   
null                                                                           
null                                                                           
null                                                                           
                                           5                                   
                                           4                                   
                                           6                                   
                                           4                                   

NULLIF(LENGTH(FIRST_NAME),LENGTH(LAST_NAME))                                   
--------------------------------------------                                   
                                           7                                   
                                           2                                   
                                           6                                   
                                           7                                   
                                           7                                   
                                           9                                   
                                           5                                   
                                           8                                   
                                           5                                   
                                           7                                   
null                                                                           

NULLIF(LENGTH(FIRST_NAME),LENGTH(LAST_NAME))                                   
--------------------------------------------                                   
                                           3                                   
                                           9                                   
null                                                                           
null                                                                           
null                                                                           
                                           5                                   
                                           9                                   
                                           7                                   
                                           6                                   
                                           5                                   
                                           7                                   

NULLIF(LENGTH(FIRST_NAME),LENGTH(LAST_NAME))                                   
--------------------------------------------                                   
null                                                                           
                                           5                                   
                                           5                                   
                                           4                                   
                                           5                                   
                                           5                                   
null                                                                           
                                           5                                   
                                           6                                   
                                           7                                   
                                           5                                   

NULLIF(LENGTH(FIRST_NAME),LENGTH(LAST_NAME))                                   
--------------------------------------------                                   
null                                                                           
                                           5                                   
                                           5                                   
                                           5                                   
null                                                                           
                                           6                                   
                                          11                                   
                                           2                                   
null                                                                           
                                           5                                   
                                           5                                   

NULLIF(LENGTH(FIRST_NAME),LENGTH(LAST_NAME))                                   
--------------------------------------------                                   
                                           6                                   
null                                                                           
                                           5                                   
null                                                                           
                                           6                                   
                                           3                                   
                                           7                                   
                                           4                                   
                                           7                                   
                                           6                                   
                                           4                                   

NULLIF(LENGTH(FIRST_NAME),LENGTH(LAST_NAME))                                   
--------------------------------------------                                   
null                                                                           
                                           7                                   
                                           7                                   
                                           7                                   
                                           6                                   
                                           7                                   
                                           8                                   
                                           7                                   
                                           5                                   
                                           5                                   
                                           6                                   

NULLIF(LENGTH(FIRST_NAME),LENGTH(LAST_NAME))                                   
--------------------------------------------                                   
                                          11                                   
                                           5                                   
                                           5                                   
                                           6                                   
null                                                                           
                                           7                                   
                                           8                                   
                                           5                                   

107 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  select nullif(length(first_name),length(last_name)) comparison, length(first_name), length(last_name)
  2* from employees
SQL> /

COMPARISON LENGTH(FIRST_NAME) LENGTH(LAST_NAME)                                
---------- ------------------ -----------------                                
         5                  5                 4                                
         6                  6                 4                                
         5                  5                 8                                
         5                  5                 6                                
         7                  7                 4                                
         6                  6                 5                                
         4                  4                 5                                
         9                  9                 5                                
         5                  5                 4                                
         5                  5                 9                                
         5                  5                 6                                

COMPARISON LENGTH(FIRST_NAME) LENGTH(LAST_NAME)                                
---------- ------------------ -----------------                                
         8                  8                 5                                
         6                  6                 4                                
         7                  7                 6                                
         6                  6                 9                                
         7                  7                 9                                
null                        4                 4                                
null                        5                 5                                
         5                  5                10                                
null                        6                 6                                
         3                  3                 7                                
         5                  5                 9                                

COMPARISON LENGTH(FIRST_NAME) LENGTH(LAST_NAME)                                
---------- ------------------ -----------------                                
         8                  8                 5                                
         6                  6                 5                                
null                        5                 5                                
         7                  7                 9                                
null                        7                 7                                
null                        6                 6                                
null                        3                 3                                
         5                  5                 6                                
         4                  4                 6                                
         6                  6                 3                                
         4                  4                 5                                

COMPARISON LENGTH(FIRST_NAME) LENGTH(LAST_NAME)                                
---------- ------------------ -----------------                                
         7                  7                 5                                
         2                  2                 3                                
         6                  6                 5                                
         7                  7                 5                                
         7                  7                 5                                
         9                  9                 5                                
         5                  5                 9                                
         8                  8                 6                                
         5                  5                 4                                
         7                  7                 9                                
null                        7                 7                                

COMPARISON LENGTH(FIRST_NAME) LENGTH(LAST_NAME)                                
---------- ------------------ -----------------                                
         3                  3                 6                                
         9                  9                 6                                
null                        6                 6                                
null                        7                 7                                
null                        5                 5                                
         5                  5                 8                                
         9                  9                 4                                
         7                  7                 4                                
         6                  6                 4                                
         5                  5                 7                                
         7                  7                 5                                

COMPARISON LENGTH(FIRST_NAME) LENGTH(LAST_NAME)                                
---------- ------------------ -----------------                                
null                        6                 6                                
         5                  5                 6                                
         5                  5                 3                                
         4                  4                10                                
         5                  5                 7                                
         5                  5                 6                                
null                        6                 6                                
         5                  5                 6                                
         6                  6                 7                                
         7                  7                 5                                
         5                  5                 6                                

COMPARISON LENGTH(FIRST_NAME) LENGTH(LAST_NAME)                                
---------- ------------------ -----------------                                
null                        6                 6                                
         5                  5                 6                                
         5                  5                11                                
         5                  5                 7                                
null                        5                 5                                
         6                  6                 8                                
        11                 11                 5                                
         2                  2                 5                                
null                        4                 4                                
         5                  5                 8                                
         5                  5                 9                                

COMPARISON LENGTH(FIRST_NAME) LENGTH(LAST_NAME)                                
---------- ------------------ -----------------                                
         6                  6                 5                                
null                        7                 7                                
         5                  5                10                                
null                        4                 4                                
         6                  6                 4                                
         3                  3                 8                                
         7                  7                 6                                
         4                  4                 7                                
         7                  7                 8                                
         6                  6                 7                                
         4                  4                 3                                

COMPARISON LENGTH(FIRST_NAME) LENGTH(LAST_NAME)                                
---------- ------------------ -----------------                                
null                        6                 6                                
         7                  7                 5                                
         7                  7                 5                                
         7                  7                 6                                
         6                  6                 8                                
         7                  7                 5                                
         8                  8                 6                                
         7                  7                 6                                
         5                  5                 6                                
         5                  5                 6                                
         6                  6                 7                                

COMPARISON LENGTH(FIRST_NAME) LENGTH(LAST_NAME)                                
---------- ------------------ -----------------                                
        11                 11                 5                                
         5                  5                 6                                
         5                  5                 7                                
         6                  6                 7                                
null                        5                 5                                
         7                  7                 5                                
         8                  8                 6                                
         5                  5                 7                                

107 rows selected.

SQL> select coalesce(manager_id, commission_pct, -1) from employees
  2  where employee_id between 130 and 150;

COALESCE(MANAGER_ID,COMMISSION_PCT,-1)                                         
--------------------------------------                                         
                                   121                                         
                                   121                                         
                                   121                                         
                                   122                                         
                                   122                                         
                                   122                                         
                                   122                                         
                                   123                                         
                                   123                                         
                                   123                                         
                                   123                                         

COALESCE(MANAGER_ID,COMMISSION_PCT,-1)                                         
--------------------------------------                                         
                                   124                                         
                                   124                                         
                                   124                                         
                                   124                                         
                                   100                                         
                                   100                                         
                                   100                                         
                                   100                                         
                                   100                                         
                                   145                                         

21 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  select coalesce(manager_id, commission_pct, -1) from employees
  2* where employee_id between 160 and 180
SQL> /

COALESCE(MANAGER_ID,COMMISSION_PCT,-1)                                         
--------------------------------------                                         
                                   146                                         
                                   146                                         
                                   147                                         
                                   147                                         
                                   147                                         
                                   147                                         
                                   147                                         
                                   147                                         
                                   148                                         
                                   148                                         
                                   148                                         

COALESCE(MANAGER_ID,COMMISSION_PCT,-1)                                         
--------------------------------------                                         
                                   148                                         
                                   148                                         
                                   148                                         
                                   149                                         
                                   149                                         
                                   149                                         
                                   149                                         
                                   149                                         
                                   149                                         
                                   120                                         

21 rows selected.

SQL> select last_name, case job_id when 'SA_REP' then salary*1.10
  2  when 'IT_PROG' then salary*1.15
  3  else salary*1.20 end Increment
  4  from employees
  5  where employee_id<110;
else salary*1.20 end Increment
                     *
ERROR at line 3:
ORA-00923: FROM keyword not found where expected


SQL> ed
Wrote file afiedt.buf

  1  select job_id, salary ,
  2  case job_id
  3  when 'SA_REP' then salary*1.10
  4  when 'IT_PROG' then salary*1.15
  5  else salary*1.20 end "Increment"
  6  from employees
  7* where employee_id<110
SQL> /

JOB_ID         SALARY  Increment                                               
---------- ---------- ----------                                               
AD_PRES         24000      28800                                               
AD_VP           17000      20400                                               
AD_VP           17000      20400                                               
IT_PROG          9000      10350                                               
IT_PROG          6000       6900                                               
IT_PROG          4800       5520                                               
IT_PROG          4800       5520                                               
IT_PROG          4200       4830                                               
FI_MGR          12000      14400                                               
FI_ACCOUNT       9000      10800                                               

10 rows selected.

SQL> ed
Wrote file afiedt.buf

  1  select job_id, salary ,
  2  decode(job_id, 'SA_REP',salary*1.10,'IT_PROG',salary*1.15,salary*1.20) "Increment"
  3  from employees
  4* where employee_id<110
SQL> /

JOB_ID         SALARY  Increment                                               
---------- ---------- ----------                                               
AD_PRES         24000      28800                                               
AD_VP           17000      20400                                               
AD_VP           17000      20400                                               
IT_PROG          9000      10350                                               
IT_PROG          6000       6900                                               
IT_PROG          4800       5520                                               
IT_PROG          4800       5520                                               
IT_PROG          4200       4830                                               
FI_MGR          12000      14400                                               
FI_ACCOUNT       9000      10800                                               

10 rows selected.

SQL> spool off