números negativos 999999PR <1234> EEEE notação científica(formato de conter quatro Es unicamente) 99.999EEEE 1.234E+03 V multiplica pela décima potência 10n(n = número 9s depois da V 9999V99 123400 B mostra valores zero em branco, não zero B9999.99 1234.00 SELECT SAL, TO_CHAR(SAL,'$9,999') FROM EMP; SAL TO_CHAR(SAL,'$9,999') 800 1600 1250 2975 1250 2850 2450 3000 5000 1500 1100 950 3000 1300 $800 $1,600 $1,250 $2,975 $1,250 $2,850 $2,450 $3,000 $5,000 $1,500 $1,100 $950 $3,000 $1,300 Os formatos das máscaras são opcionais. Se a ‘máscara’ é omitida, a data é convertida para um alfanumérico que é padrão DD-MON-YY. Se a ‘máscara’ não é especificada, o número é convertido para alfanumérico. Formatos de Data Máscara Significado SCC ou CC Século, prefixo ‘S’ “BC”data com ‘-’ YYYY ou SYYYY Ano, prefixo ‘S’ “BC” data com ‘-’ YYY ou YY ou Y Último 3, 2 ou 1 digito(s) do ano Y,YYY Ano com vírgula nessa posição SYEAR ou YEAR Ano, soletrado na saída ‘S’ prefixo “BC” data com ‘-’ BC ou AD BC/AD período B.C. ou A.D. BC/AD indicador com períodos Q Um quarto do Ano MM Mês MONTH nome do mês, espaçamento com brancos do tamanho de 9 caracteres MON nome do mês, 3 letras abreviadas WW ou W Semana do ano ou mês DDD ou DD ou D dia do ano, mês ou semana DAY nome do dia, espaçado com brancos com 9 caracteres de tamanho DY nome do dia, 3 letras abreviadas J data Juliana, o número de dias desde 31 dezembro 4713 antes de Cristo AM ou PM Indicador meridiano A.M. ou P.M. indicador meridiano com períodos HH ou HH12 horas do dia (1-12) HH24 horas do dia (0-23) MI minuto SS segundos SSSSS segundos passado meia-noite(0-86399) /.,etc. pontuação é reproduzida no resultado “...” cotas de linhas são representadas no resultado. Os sufixos abaixo devem ser adicionados em frente dos códigos: TH Ex.: SELECT TO_CHAR(SYSDATE,'DAY, DDTH MONTH YYYY') FROM DUAL; SEXTA-FEIRA , 01ST DEZEMBRO 2000 SP Ex.: SELECT TO_CHAR(SYSDATE,'DAY, DDSP MONTH YYYY') FROM DUAL; SEXTA-FEIRA , ONE DEZEMBRO 2000 SPTH ou thsp Ex.: SELECT TO_CHAR(SYSDATE,'DAY, DDSPTH MONTH YYYY') FROM DUAL; SEXTA-FEIRA , FIRST DEZEMBRO 2000 DAY MONDAY Day Monday Month July Ddth 14th DdTh 14Th TO_NUMBER No seguinte exemplo a função TO_NUMBER é usada para transformar um número armazenado como um alfanumérico para um tipo numérico: SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE SAL > TO_NUMBER('1500'); EMPNO ENAME JOB SAL 7499 7566 7698 7782 7788 7839 7902 ALLEN JONES BLAKE CLARK SCOTT KING FORD SALESMAN MANAGER MANAGER MANAGER ANALYST PRESIDENT ANALYST 1600 2975 2850 2450 3000 5000 3000 TO_DATE Para mostrar todos os empregados admitidos em 4 de junho de 1984 (não formato padrão), nós podemos usar a função TO_DATE: SELECT EMPNO, ENAME, HIREDATE FROM EMP WHERE HIREDATE = TO_DATE ('September 8, 1981','Month dd, yyyy'); EMPNO ENAME HIREDATE ----- ---------- --------- 7844 TURNER 08-SEP-81 O conteúdo é convertido para data e comparado com o valor de DATA. Para entrar um linha na tabela EMP com a data não no formato padrão: INSERT INTO EMP (EMPNO, DEPTNO,HIREDATE) VALUES (7777,20,TO_DATE('19/08/90 00:00:00','DD/MM/YY HH:MI:SS')); � Funções que Aceitam Vários Tipos de Entrada de Dados DECODE DECODE é a mais potente função do SQL. Ele facilita pesquisas condicionais fazendo o trabalho de ‘ferramentas’ ou comandos ‘IF-THEN-ELSE’. Sintaxe: DECODE(col/expressão, procurado1,resultado1, procurado2,resultado2...,padrão) Col/expressão é comparado com cada um dos valores procurados e retorna o resultado se a col/expressão é igual ao valor procurado. Se não for encontrado nenhum dos valores procurados, a função DECODE retorna o valor padrão. Se o valor padrão for omitido ele retornará um valor nulo. O seguinte exemplo decodifica os cargos dos tipos MANAGER e CLERK unicamente. Os outros cargos serão padrão, alterados para UNDEFINED: SELECT ENAME, JOB, DECODE(JOB,'CLERK','WORKER', 'MANAGER','BOSS') FROM EMP; ENAME JOB DECODE SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER CLERK SALESMAN SALESMAN MANAGER SALESMAN MANAGER MANAGER ANALYST PRESIDENT SALESMAN CLERK CLERK ANALYST CLERK WORKER BOSS BOSS BOSS WORKER WORKER WORKER Para mostrar a gratificação percentual dependendo do grau do salário: SELECT GRADE, DECODE(GRADE,'1','15%', '2','10%', '3','8%', '4’,’5%') BONUS FROM SALGRADE; GRADE BONUS FROM SALGRADE 1 2 3 4 5 15% 10% 8% 5% Esse exemplo ilustra que com a função DECODE, o valor retornado é forçado a ter um tipo de dado no terceiro argumento. NVL NVL(col/valor,valor) converte um valor nulo para um valor desejado. Tipo de dados devem combinar(col/valor e valor). SELECT SAL*12+NVL(COMM,0), NVL(COMM,1000), SAL*12+NVL(COMM,1000) FROM EMP WHERE DEPTNO = 10; SAL*12+NVL(COM,0) NVL(COM,1000) SAL*12+NVL(COM,1000) 29400 60000 15600 1000 1000 1000 30400 61000 16600 GREATEST GREATEST(col/valor1,col/valor2,...) retorna o maior da lista de valores. Todos os col/valores são convertidos para um valor antes da comparação. SELECT SAL, COMM, GREATEST(1000,2000), GREATEST(SAL,COMM) FROM EMP WHERE DEPTNO = 30; SAL COMM GREATEST(1000,2000) GREATEST(SAL,COMM) 1600 1250 1250 2850 1500 950 300 500 1400 0 2000 2000 2000 2000 2000 2000 1600 1250 1400 1500 Na função GREATEST quando na lista de valores existe um valor nulo ele é considerado como o maior. LEAST LEAST(col/valor1,col/valor2,...) retorna o menor valor de um lista de valores. Todos os valores são convertidos antes da comparação. SELECT SAL, COMM, LEAST(1000,2000), LEAST(SAL,COMM) FROM EMP WHERE DEPTNO = 30; SAL COMM LEAST(1000,2000) LEAST(SAL,COMM) 1600 1250 1250 2850 1500 950 300 500 1400 0 1000 1000 1000 1000 1000 1000 300 500 1250 0 Na função LEAST quando na lista de valores existe um valor nulo ele é considerado como o menor. VSIZE VSIZE(col/valor) retorna o número de bytes interno do ORACLE representando um col/valor. SELECT DEPTNO, VSIZE(DEPTNO), VSIZE(HIREDATE), VSIZE(SAL), VSIZE(ENAME) FROM EMP WHERE DEPTNO = 10; SETOR VSIZE(SETOR) VSIZE(DATA) VSIZE(SAL) VSIZE(NOME) 10 2 7 3 5 10 2 7 2 4 10 2 7 2 6 Funções de Grupo Funções de grupo operam sobre conjuntos de linhas. Elas retornam resultados baseados sobre um grupo de linhas, antes que um resultado por linha tenha retornado como uma função de linha única. Como padrão todas as linhas de um tabela são trilhadas como um grupo. A clausula GROUP BY da declaração do SELECT é usada para agrupar as linhas em menores grupos. As funções de grupos são listadas abaixo: Função Valor Retornado AVG([DINSTINCT/ALL]n) Valor médio de n, ignorando os valores nulos. COUNT([DINSTINCT/ALL]expr*) Contador * conta todas as linhas selecionadas, incluindo duplicadas e linhas nulas MAX([DISTINCT/ALL]expr) valor máximo da expressão MIN([DISTINCT/ALL]expr)