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