--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