As funções incorporadas no DB2 são disponibilizadas pelo próprio gerenciador de banco de dados e se dividem em três tipos principais:

  • Funções Agregadas: operam sobre um conjunto de linhas e retornam um único valor.

  • Funções Escalares: operam sobre uma única linha e retornam um único valor.

  • Funções de Tabela: retornam uma tabela de resultados.

Abaixo estão listadas e classificadas as funções mais relevantes, organizadas por categorias.

✨ Funções Agregadas

  • AVG: média dos valores.

  • SUM: soma total dos valores.

  • MIN / MAX: menor / maior valor.

  • COUNT: quantidade de linhas.

  • MEDIAN, STDDEV, VARIANCE: estatísticas diversas.

  • LISTAGG: concatena strings com separador.

  • GROUPING: indica linhas de subtotal em ROLLUP e CUBE.

▣ Funções Escalares

Conversão de Tipos

  • CAST, INT, DECIMAL, CHAR, VARCHAR, DATE, TIMESTAMP, etc.

  • TO_DATE, TO_CHAR, TO_NUMBER, etc.

Datas e Horas

  • CURRENT DATE, CURRENT TIME, CURRENT TIMESTAMP

  • DAY, MONTH, YEAR, HOUR, MINUTE, SECOND

  • DAYS_BETWEEN, MONTHS_BETWEEN, ADD_DAYS, LAST_DAY, ROUND_TIMESTAMP, etc.

Numéricas

  • ABS, CEIL, FLOOR, ROUND, MOD, SQRT, POWER, LOG10, etc.

Strings

  • LENGTH, SUBSTRING, TRIM, UPPER, LOWER, REPLACE, CONCAT, POSITION, INSTR, etc.

  • REGEXP_LIKE, REGEXP_REPLACE, REGEXP_COUNT, etc.

Diversas

  • COALESCE, NULLIF, NVL, VALUE, GREATEST, LEAST, etc.

📊 Funções de Agrupamento Avançado

  • ROLLUP: cria subtotais hierárquicos.

  • CUBE: cria tabulações cruzadas completas.

  • GROUPING SETS: combina agrupamentos personalizados.

🔗 Funções de Regressão

  • REGR_AVGX, REGR_AVGY, REGR_COUNT, REGR_SLOPE, REGR_INTERCEPT, REGR_R2, etc.

🔄 Funções de Expressão Regular

  • REGEXP_LIKE, REGEXP_REPLACE, REGEXP_SUBSTR, REGEXP_COUNT, etc.

🔢 Funções de Matriz

  • ARRAY_AGG, UNNEST, CARDINALITY, ARRAY_DELETE, etc.

📂 Funções de Tabela

  • UNNEST: converte arrays em linhas.

  • XMLTABLE: converte XML em tabela.

  • BASE_TABLE: resolve nome de tabela.

👾 Funções XML

  • XMLAGG, XMLCONCAT, XMLELEMENT, XMLQUERY, XMLTABLE, etc.

⚡ Exemplo Prático

SELECT DEPTNO,
       AVG(SALARY) AS MEDIA_SALARIO,
       MAX(SALARY) AS SALARIO_MAX,
       MIN(SALARY) AS SALARIO_MIN,
       COUNT(*) AS TOTAL_FUNC
  FROM FUNCIONARIOS
 GROUP BY DEPTNO
 ORDER BY DEPTNO;

📅 Exemplo com Datas

SELECT EMPNOME,
       CURRENT_DATE AS HOJE,
       EMPADMI,
       DAYS_BETWEEN(CURRENT_DATE, EMPADMI) AS DIAS_TRABALHADOS
  FROM EMP
 WHERE EMPADMI IS NOT NULL;

 

✅ Conclusão

As funções integradas do DB2 são poderosas e versáteis, permitindo desde operações simples até consultas complexas. Dominar essas funções é essencial para consultas eficientes e expressivas no banco de dados.