Usando funções de linha única
Usando funções de linha única para personalizar a saída
O Oracle SQL fornece uma rica biblioteca de funções embutidas que podem ser empregadas para várias tarefas. Os recursos essenciais de uma função podem ser a conversão de caso de strings, operações em string ou substring, cálculos matemáticos em dados numéricos e operações de data em valores de tipo de data. Funções SQL opcionalmente recebem argumentos do usuário e obrigatoriamente retornam um valor.
Em uma categoria mais ampla, existem dois tipos de funções: -
Single Row functions- Funções de linha única são aquelas que trabalham em linha única e retornam uma saída por linha. Por exemplo, as funções de conversão de comprimento e caixa são funções de linha única.
Multiple Row functions - As funções de várias linhas funcionam em um grupo de linhas e retornam um resultado para o conjunto completo de linhas. Eles também são conhecidos como funções de grupo.
Funções de linha única
As funções de linha única podem ser funções de caracteres, funções numéricas, funções de data e funções de conversão. Observe que essas funções são usadas para manipular itens de dados. Essas funções requerem um ou mais argumentos de entrada e operam em cada linha, retornando assim um valor de saída para cada linha. O argumento pode ser uma coluna, literal ou uma expressão. Funções de linha única podem ser usadas na instrução SELECT, cláusula WHERE e ORDER BY. As funções de linha única podem ser -
General functions- Geralmente contém funções de manipulação NULL. As funções nesta categoria são NVL, NVL2, NULLIF, COALESCE, CASE, DECODE.
Case Conversion functions- Aceita a entrada de caracteres e retorna um valor de caractere. As funções na categoria são UPPER, LOWER e INITCAP.
A função UPPER converte uma string em maiúsculas.
A função LOWER converte uma string em minúsculas.
A função INITCAP converte apenas os alfabetos iniciais de uma string em maiúsculas.
Character functions- Aceita a entrada de caracteres e retorna o número ou o valor do caractere. As funções na categoria são CONCAT, LENGTH, SUBSTR, INSTR, LPAD, RPAD, TRIM e REPLACE.
A função CONCAT concatena dois valores de string.
A função LENGTH retorna o comprimento da string de entrada.
A função SUBSTR retorna uma parte de uma string de um determinado ponto inicial até um ponto final.
A função INSTR retorna a posição numérica de um caractere ou string em uma determinada string.
As funções LPAD e RPAD preenchem a string fornecida até um comprimento específico com um determinado caractere.
A função TRIM apara a entrada da string desde o início ou fim.
A função REPLACE substitui os caracteres da string de entrada por um determinado caractere.
Date functions- Operações aritméticas de data retornam data ou valores numéricos. As funções na categoria são MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY, ROUND e TRUNC.
A função MONTHS_BETWEEN retorna a contagem de meses entre as duas datas.
A função ADD_MONTHS adiciona 'n' número de meses a uma data de entrada.
A função NEXT_DAY retorna o próximo dia da data especificada.
A função LAST_DAY retorna o último dia do mês da data de entrada.
As funções ROUND e TRUNC são usadas para arredondar e truncar o valor da data.
Number functions- Aceita entrada numérica e retorna valores numéricos. As funções na categoria são ROUND, TRUNC e MOD.
As funções ROUND e TRUNC são usadas para arredondar e truncar o valor do número.
MOD é usado para retornar o restante da operação de divisão entre dois números.
Ilustrações
Funções gerais
A consulta SELECT abaixo demonstra o uso da função NVL.
SELECT first_name, last_name, salary, NVL (commission_pct,0)
FROM employees
WHERE rownum < 5;
FIRST_NAME LAST_NAME SALARY NVL(COMMISSION_PCT,0)
-------------------- ------------------------- ---------- ---------------------
Steven King 24000 0
Neena Kochhar 17000 0
Lex De Haan 17000 0
Alexander Hunold 9000 0
Funções de conversão de caso
A consulta SELECT abaixo demonstra o uso de funções de conversão de caso.
SELECT UPPER (first_name), INITCAP (last_name), LOWER (job_id)
FROM employees
WHERE rownum < 5;
UPPER(FIRST_NAME) INITCAP(LAST_NAME) LOWER(JOB_
-------------------- ------------------------- ----------
STEVEN King ad_pres
NEENA Kochhar ad_vp
LEX De Haan ad_vp
ALEXANDER Hunold it_prog
Funções de personagem
A consulta SELECT abaixo demonstra o uso da função CONCAT para concatenar dois valores de string.
SELECT CONCAT (first_name, last_name)
FROM employees
WHERE rownum < 5;
CONCAT(FIRST_NAME,LAST_NAME)
--------------------------------
EllenAbel
SundarAnde
MozheAtkinson
DavidAustin
A consulta SELECT abaixo demonstra o uso das funções SUBSTR e INSTR. A função SUBSTR retorna a parte da string de entrada da 1ª posição até a 5ª posição. A função INSTR retorna a posição numérica do caractere 'a' no primeiro nome.
SELECT SUBSTR (first_name,1,5), INSTR (first_name,'a')
FROM employees
WHERE rownum < 5;
SUBST INSTR(FIRST_NAME,'A')
----- ---------------------
Ellen 0
Sunda 5
Mozhe 0
David 2
A consulta SELECT abaixo demonstra o uso de LPAD e RPAD para imprimir as informações do funcionário e do trabalho.
SELECT RPAD(first_name,10,'_')||LPAD (job_id,15,'_')
FROM employees
WHERE rownum < 5;
RPAD(FIRST_NAME,10,'_')||
-------------------------
Steven____________AD_PRES
Neena_______________AD_VP
Lex_________________AD_VP
Alexander_________IT_PROG
Funções numéricas
A consulta SELECT abaixo demonstra o uso das funções ROUND e TRUNC.
SELECT ROUND (1372.472,1)
FROM dual;
ROUND(1372.472,1)
-----------------
1372.5
SELECT TRUNC (72183,-2)
FROM dual;
TRUNC(72183,-2)
---------------
72100
Operações aritméticas de data
A consulta SELECT abaixo mostra uma função aritmética de data onde a diferença entre a data de contratação do funcionário e a data do sistema é feita.
SELECT employee_id, (sysdate - hire_date) Employment_days
FROM employees
WHERE rownum < 5;
EMPLOYEE_ID EMPLOYMENT_DAYS
----------- ---------------
100 3698.61877
101 2871.61877
102 4583.61877
103 2767.61877
Funções de data
A consulta SELECT abaixo demonstra o uso das funções MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY e LAST_DAY.
SELECT employee_id, MONTHS_BETWEEN (sysdate, hire_date) Employment_months
FROM employees
WHERE rownum < 5;
EMPLOYEE_ID EMPLOYMENT_MONTHS
----------- -----------------
100 121.504216
101 94.3751837
102 150.633248
103 90.9558289
SELECT ADD_MONTHS (sysdate, 5), NEXT_DAY (sysdate), LAST_DAY (sysdate)
FROM dual;
ADD_MONTH NEXT_DAY( LAST_DAY(
--------- --------- ---------
01-JAN-14 05-AUG-13 31-AUG-13