Oracle - PL/SQL: Funções Diversas do Oracle SQL

Descrição:

Estas são algumas das primcipais funções do Oracle para tratamento e formatação de data e hora, formatação de números e manipulação de caracteres, e seus respctivos exemplos de uso e aplicações práticas em consultas SQL para cada função.

 

Funções de Data e Hora

  • TO_DATE(string): Converte uma string em uma data.

    SELECT TO_DATE('2006-07-17 12:15:45', 'yyyy-mm-dd hh24:mi:ss')+1 FROM dual;

 

  • SELECT SYSDATE: Retorna a data e hora atuais do sistema.

    SELECT SYSDATE FROM DUAL;

 

  • ADD_MONTHS(SYSDATE,1): Adiciona meses a uma data.

    SELECT ADD_MONTHS(SYSDATE, 1) FROM DUAL;

 

  • CURRENT_DATE: Retorna a data e hora atuais do sistema na sessão do usuário.

    SELECT CURRENT_DATE FROM DUAL;

 

  • LAST_DAY(SYSDATE): Retorna o último dia do mês de uma data.

    SELECT LAST_DAY(SYSDATE) FROM DUAL;

 

  • MONTHS_BETWEEN('31/01/2009','31/01/2010'): Calcula a diferença em meses entre duas datas.
    SELECT MONTHS_BETWEEN('31/01/2009', '31/01/2010') TOT_MESES FROM DUAL; 

 

  • TRUNC(SYSTIMESTAMP AT TIME ZONE 'America/Sao_Paulo' -30): Trunca uma data ou timestamp para um valor específico.

    SELECT TRUNC(SYSTIMESTAMP AT TIME ZONE 'America/Sao_Paulo' -30) FROM DUAL;

 

  • EXTRACT(YEAR|MONTH|DAY|HOUR|MINUTE|TIMEZONE FROM DATE|TIMESTAMP): Extrai partes de uma data ou timestamp.Extrai partes de uma data ou timestamp.

    SELECT EXTRACT(YEAR FROM DATE '2012-05-01') FROM dual;
    SELECT EXTRACT(MONTH FROM DATE '2012-05-01') FROM dual;
    SELECT EXTRACT(DAY FROM DATE '2012-05-01') FROM dual;
    SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual;
    SELECT EXTRACT(MONTH FROM SYSDATE) FROM dual;
    SELECT EXTRACT(DAY FROM SYSDATE) FROM dual;
    SELECT EXTRACT(YEAR FROM SYSTIMESTAMP) FROM dual;
    SELECT EXTRACT(MONTH FROM SYSTIMESTAMP) FROM dual;
    SELECT EXTRACT(DAY FROM SYSTIMESTAMP) FROM dual;
    SELECT EXTRACT(HOUR FROM SYSTIMESTAMP) FROM dual;
    SELECT EXTRACT(MINUTE FROM SYSTIMESTAMP) FROM dual;
    SELECT EXTRACT(SECOND FROM SYSTIMESTAMP) FROM dual;
    SELECT EXTRACT(TIMEZONE_HOUR FROM SYSTIMESTAMP) FROM dual;
    SELECT EXTRACT(TIMEZONE_MINUTE FROM SYSTIMESTAMP) FROM dual;
    SELECT EXTRACT(TIMEZONE_REGION FROM SYSTIMESTAMP) FROM dual;
    SELECT EXTRACT(TIMEZONE_ABBR FROM SYSTIMESTAMP) FROM dual;

 

Funções de Formatação de Números

  • TO_CHAR(número): Converte um número em uma string com formato específico.

    SELECT TO_CHAR(sal, '$999,999.99') FROM emp;

 

  • TO_NUMBER(string) : Converte uma string em um número.

    SELECT empno, ename, job, sal FROM emp WHERE sal > TO_NUMBER('1500');

 

  • MASCARA_NUMERO: Aplica uma máscara de formato a um número.

    SELECT TO_CHAR(1234, '999') FROM dual;

 

Funções de Manipulação de Caracteres

  • CHR(v1): Retorna o caractere correspondente ao código ASCII especificado.

    SELECT CHR(49) AS "CHR(49)", CHR(97) AS "CHR(97)", CHR(38) AS "CHR(38)" FROM dual;

 

  • NVL(v1,v2): Substitui valores nulos por um valor especificado.
  • SELECT sal, comm, sal * 14 + NVL(comm, 0) FROM emp;

 

  • GREATEST(v1,v2,v3): Retorna o maior valor entre os argumentos fornecidos.

    SELECT GREATEST(1, 2), GREATEST(1, 2, 3), GREATEST(1, 2, 3, 4) FROM dual;

 

Funções Condicionais

  • DECODE(v, v1, r1, v2, r2, r_default): Compara um valor com uma lista de valores e retorna o resultado correspondente.

    SELECT grade, DECODE (grade, 1, '15%', 2, '10%', 3, '8%', '5%') "Bonus" FROM salgrade;

    SELECT ename, job, DECODE(job, 'CLERK', 'Empregado de escritório', 'ANALYST', 'Analista programador', 'MANAGER', 'Gestor', 'SALESMAN', 'Vendedor', 'PRESIDENT', 'Presidente', 'UNKNOWN') "Job2" FROM emp; 
  • CASE: Executa expressões condicionais mais complexas, permitindo comparações com operadores lógicos.

    SELECT ename, job,
    CASE
    WHEN job = 'CLERK' THEN 'Empregado de escritório'
    WHEN job = 'ANALYST' THEN 'Analista programador'
    WHEN job = 'MANAGER' THEN 'Gestor'
    WHEN job = 'SALESMAN' THEN 'Vendedor'
    WHEN job = 'PRESIDENT' THEN 'Presidente'
    ELSE 'Outra função'
    END AS "Função"
    FROM emp;

     

    SELECT sal,
    CASE
    WHEN sal < 800 THEN 'baixo'
    WHEN sal < 1500 THEN 'médio'
    WHEN sal < 2500 THEN 'médio alto'
    ELSE 'alto'
    END AS Salario
    FROM emp;

Data de Publicação: 17-10-2023

Categoria: PL/SQL