FUNÇÕES EM SQL
SINGLE –ROW – RETORNA UM RESULTADO POR
LINHA
MULTIPLE-ROW – RETORNA UM RESULTADO POR
GRUPO DE LINHAS
FUNÇÕES SQL DE UM ÚNICA LINHA
ARGUMENTOS PODEM SER COLUNAS DE TABELAS
OU EXPRESSÕES.
PODEM SER USADAS NO SELECT , WHERE E ORDER
BY.
DIVIDIDAS EM :
◦ CARACTER: ACEITAM UM ARGUMENTO EM CARACTER E
RETORNA UM CARACTER OU NUMERICO
◦ NUMÉRICAS: ACEITA NUMÉRICO E RETORNA NUMÉRICO
◦ DATA: OPERA EM TIPOS DATE.
◦ CONVERSÃO: CONVERTE DE UM TIPO PARA OUTRO
FUNÇÕES SQL DE CARACTERES:
LOWER – CONVERTE CARACTERES PARA MINUSCULA – Turma SQL = turma sql
Select lower(nomereal) from atores;
Select nomereal from atores where lower(nomereal)=’sandra bullock’
Select nomereal from atores where lower(nomereal) like ’sandra%’
UPPER – CONVERTE CARACTERES PARA MAIUSCULA
Select upper(nomereal) from atores;
INITCAP - CONVERTE A PRIMEIRA LETRA DE CADA PALAVRA DO ARGUMENTO, O
RESTO FICA EM MINUSCULA
Select initcap(nomereal) from atores;
CONCAT – CONCATENA OS DOIS ARGUMENTOS – IGUAL AO PIPE ||
Select concat(nome, ’ faleceu ontem ’) from atores
FUNÇÕES SQL DE CARACTERES:
SUBSTR(STRING,POSICAO,TAMANHO)- RETORNA OS CARACTERES DA
STRING COMECANDO NA POSICAO E SENDO DO TAMANHO.
SE POSICAO FOR NEGATIVA A POSIÇÃO COMEÇA NO FIM DA STRING, E SE
TAMANHO É OMITIDO RETORNA TODOS OS CARACTERES A PARTIR DA POSIÇÃO.
Select substr(nome, 1, 5) from atores
where SUBSTR(‘nome’,-1,1)=’n’ TERMINA COM n.
LENGTH – RETORNA O TAMANHO DA STRING
Select length(nome) as tamanho from atores;
REPLACE(STRING, BUSCA, SUBSTITUI)- SUBSTITUI UMA STRING DE BUSCA
NA STRING FORNECIDA PELA DE SUBSTITUICAO
Select replace(nome, ’ç’, ’c’) from atores;
FUNÇÕES SQL NUMÉRICAS:
ROUND(NUMERO,2)- ARREDONDA O VALOR PARA UM DECIMAL
INFORMADO .
SELECT ROUND(45.926,2) FROM DUAL; = 45.93
SELECT ROUND(45.926,0) FROM DUAL; = 46
SELECT ROUND(45.926,-1) FROM DUAL; = 50
DUAL É UMA TABELA AUXILIAR COM UMA COLUNA E UMA LINHA QUE
PERMITE VER RESULTADOS DE FUNCOES.
TRUNC(NUMERO,2)- TRUNCA O NUMERO PARA UM DECIMAL INORMADO.
SELECT TRUNC(45.926,2) FROM DUAL; = 45.92
SELECT TRUNC(45.926) FROM DUAL; = 45
SELECT TRUNC(45.926,-1) FROM DUAL; = 40
MOD(160,30)- RETORNA O RESTO DA DIVISAO
RESTO É UTIL PARA SABER SE UM NUMERO E PAR OU IMPAR.
FUNÇÕES SQL DE DATA
CAMPO DATE NO ORACLE ARMAZENA DIA,MÊS,ANO,HORA,MIN E
SEGUNDO.
O PADRAO DE VISUALIZACAO DEPENDE DA LINGUAGEM DA INSTALAÇÃO
PARA PORTUGUES = DD/MM/YYYY
INGLÊS = DD-MON-YYYY
FUNCAO SYSDATE-RETORNA DATA E HORA DO SISTEMA
SELECT SYSDATE FROM DUAL;
PODE SER USADA PARA CALCULO COM DATAS.
ADICIONAR OU SUBTRAIR DIAS PARA DATAS RESULTA EM UMA DATA
SYSDATE + 1 FROM DUAL
SUBTRAIR UMA DATA DE OUTRA RESULTA EM DIAS
SELECT SYSDATE – DATAFILME TEMPO_LANCAMENTO FROM FILMES;
ADICIONAR HORAS PARA UMA DATA E HORA
SYSDATE +1/24 – ADICIONA 1 HORA.
FUNÇÕES SQL DE DATA
MONTHS_BETWEEN = NUMERO DE MESES ENTRE DUAS DATAS
SELECT MONTHS_BETWEEN(SYSDATE,DATAFILME) FROM FILMES;
PODE SER NEGATIVO, A PARTE DECIMAL REPRESENTA FRAÇÃO DE MÊS.
EX. WHERE MONTHS_BETWEEN(SYSDATE,DATAFILME) <= 12 => LANCAMENTOS NO ULTIMO ANO
ADD_MONTHS = ADICIONA MESES PARA UMA DATA
SELECT ADD_MONTHS(SYSDATE,2) FROM DUAL; PODE ADICIONAR NEGATIVO.
LAST_DAY= ULTIMO DIA DE UM MÊS DA DATA INFORMADA
SELECT LAST_DAY(SYSDATE) FROM DUAL;
ROUND= DATA ARREDONDADA
Suponha que sysdate = 11/06/2012 20:03:58
Select round(sysdate) from dual; == 12/06/2012 00:00:00
TRUNC= DATA TRUNCADA
Select trunc(sysdate) from dual; == 11/06/2012 00:00:00
CONVERSÃO DE TIPOS
IMPLICITA:
◦ VARCHAR/CHAR PARA NUMBER OU DATE => OCORREM APENAS SE O
CHAR REPRESENTA UM NUMERO VALIDO, SENÃO OCORRE ERRO.
◦ NUMBER/DATE PARA CHAR OU VARCHAR
FUNÇÕES DE CONVERSÃO(EXPLÍCITA):
◦ TO_CHAR() => CONVERTE UM NUMBER OU DATE PARA UM VARCHAR2
PARA DATA => TO_CHAR(SYSDATE,’DD/MM/YYYY’) == MASCARA E CASE SENSITIVE
Ex. TO_CHAR(SYSDATE,’DD/MM/YYYY HH24:MI:SS’)
PARA NUMBER => TO_CHAR(SALARY,’99G999D00’)== OU ’99G999D90’
◦ TO_NUMBER() => TO_NUMBER(’545.90’)
◦ TO_DATE()=> TO_DATE(‘01/01/2012’,’DD/MM/YYYY’)
MELHOR USAR A MASCARA
FUNÇÕES SQL
ANINHANDO FUNÇÕES
SELECT NOMEREAL,
UPPER(SUBSTR(NOMEREAL,1,8)||’_br’) FROM
ATORES;
TRATAMENTO DE NULOS
FUNCAO NVL => SUBSTITUI O NULL POR ALGO
◦ EX. NVL(SALARIO,0)
◦ NVL(DATA_CONTRATO,’01/01/2012’)
◦ NVL(NOME,’SEM NOME’)
PODE SER USADO NO SELECT E WHERE