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.