Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

quinta-feira, 20 de outubro de 2011

Curso Oracle 11g - Lesson 4 - Programação

--Lesson 4
--Conversão de data para texto
Select  last_name,
        TO_CHAR(hire_date, 'fmDD Month YYYY') As Hiredate, -- "fm" tira os espaços em branco
        TO_CHAR(hire_date, 'DD Month YYYY') As Hiredate_sem_fm,
        TO_CHAR(hire_date, 'fmMonth Year') As Por_extenso,
        TO_CHAR(hire_date, 'Dy Day') As dias_semana,
        TO_CHAR(hire_date, 'dy day') As dias_semana, -- é case sensitive, se deixar escrito em minusculo, o resultado também sai em minusculo
        TO_CHAR(hire_date, 'DD "de" Mon "de" YYYY') As Com_de,
       
        --Refente ao dias existe as seguintes opções:
        TO_CHAR(hire_date, 'ddspth') As Ex_ddspth, --Por extenso
        TO_CHAR(hire_date, 'ddthsp') As Ex_ddthsp, --Por extenso
        TO_CHAR(hire_date, 'DdTh') As Ex_DdTH, --Ordinal
        TO_CHAR(hire_date, 'DdSp') As Ex_DdSP --Ordinal por extenso
From Employees;



--Conversão de número para texto

Select salary,
      TO_CHAR(salary, '$99,999.00') As Simbolo_$, --onde "$99,999.00" é o formato de saida usando o simbolo de $ no inicio do valor
      TO_CHAR(salary, '99,999.99') As Sem_Simbolo, --apenas a formatação de saida sem simbolo
      TO_CHAR(salary, '99G999D99') As Separador, --usar os separadores de milhares e decimais no idioma local
      TO_CHAR(salary, '00,000.00') As Zeros, --Forçanco zeros a esquerda
      TO_CHAR(salary, 'L00,000.00') As Simbolo_Local--Saida com o simbolo local
From Employees;  
     

--Conversão de número para data

Select first_name, hire_date
From employees
Where 1=1
and hire_date >='10/06/2006'
or hire_date >= TO_DATE('2006/06/10','YYYY/MM/DD'); -- onde 'YYYY/MM/DD' é o formato da data

    
--Conversão de texto para número
Select first_name, salary
From Employees
Where salary > '5000'
or salary > 5000
or salary > 5000.50
or salary > TO_NUMBER('5,000.00','999,999.00'); --onde '999,999.00' é o formato do número


--Função dentro de outra

Select Upper(concat(first_name, concat(' ', last_name)))
            || concat(concat(' - ', email), '@empresa.com') As Exemplo
From Employees;


----------Funções gerais
--NVL e NVL2, trocar valores nulos por outro

Select salary, commission_pct,
       salary + (salary * nvl(commission_pct, 0)) as salario_comisao,
       TO_CHAR(commission_pct, '9.00'),
       NVL(TO_CHAR(commission_pct, '9.00'),'Sem comissão') NVL1,
-- sai dois resultados
       NVL2(commission_pct, 'tem comissão', 'não tem') as NVL2,
       NVL2(commission_pct, commission_pct, 0) As NVL2     
      
From employees
order by 1;


--NULLIF -- Se achar um valor, trocar por nulo
SELECT first_name, LENGTH(first_name) "expr1",
       last_name,  LENGTH(last_name)  "expr2",
       NULLIF(LENGTH(first_name), LENGTH(last_name)) result
FROM   employees;

--COALESCE -- Verifica as expressões até encontrar um valor nulo para substituir, sem limites de parametro, e ele para no primeiro parametro que encontar nulo e iguinora os demais
Select last_name, employee_id, commission_pct, manager_id,
      COALESCE(TO_CHAR(commission_pct), TO_CHAR(manager_id), 'sem comissão')
From employees;


Fiquem a vontade para comentar e sugerir melhorias e/ou correção dos exemplos acima.

Nenhum comentário:

Postar um comentário

Related Posts Plugin for WordPress, Blogger...