RESPOSTAS DA AULA ANTERIOR
1- SELECT last_name, salary, department_id
FROM employeeswhere last_name like 'S_i%' and
department_id ^= 50
order by salary;
2- SELECT last_name, salary
FROM employees
where salary between 2000 and 3500
and salary*1.1 < 3500
order by salary;
3- SELECT first_name "Nome",
last_name "Sobrenome",
salary "Salário",
department_id "Departamento",
job_id "Cargo"
FROM employees
where first_name = '&Nome' or
employee_id = '&ID'
order by salary;
------------------------------------------------------------
Funções
As funções são usadas para converter ou manipular valores de dados tornando uma consulta ao Banco de Dados muito mais eficiente.
Funções podem ser usadas para:
- Executar cálculos de dados;
- Modificar itens individuais;
- Manipular a saída para grupos de linhas;
- Formatar números e datas para exibição;
- Converter tipos de dados.
Primeiramente, há dois tipos de funções linha: as funções de uma linha e as funções de várias linhas (também conhecidas por funções de grupo).
Funções de linha
As funções de uma única linha sempre retornam um valor, mas nem sempre aceitam argumentos. Manipulam itens de dados. Elas atuam em cada linha retornada do BD. Retornam apenas um resultado por linha. Podem modificar o tipo de dados do registro retornado. Elas podem ser aninhadas. Seus argumentos podem ser uma constante fornecida pelo usuário, um nome de coluna, um valor de variável ou uma expressão e podem ser usadas SELECT, WHERE e ORDER BY.
Iremos abordar as funções de caracteres, números e datas nesta aula.
Funções de caractere
As funções de caractere aceitam a entrada de caracteres e podem retornar valores de caractere ou de números. Algumas das funções são as seguintes:
CONVERSÃO
- LOWER - converte todos os caracteres do campo para minúsculo;
Ex.: SELECT LOWER(oracle) FROM dual; Resultado: oracle
- UPPER- converte todos os caracteres do campo para maiúsculo;
Ex.: SELECT UPPER(oracle) FROM dual; Resultado: ORACLE
- INITCAP - converte a primeira letra de cada palavra no campo em maiúsculo e as demais em minúsculo.
Ex.: SELECT INITCAP(oracle) FROM dual; Resultado: Oracle
Obs: dual é uma tabela interna utilizada para cálculos ou buscas fictícias de teste;
São demasiadamente utilizadas para converter valores informados em uma consulta, antes de realizar a busca no Banco de Dados. Por exemplo, os nomes de funcionários são cadastrados no sistema sem padronização ou padronização desconhecida, como o nome = 'Fulano' e sobrenome = 'sicrano de beltrano'. Porém quando realizamos uma busca simples podemos não encontrar o registro esperado:
SELECT nome , sobrenome FROM empregados WHERE nome = 'fulano';
O resultado é: nenhum registro encontrado!
Usando as funções de caractere podemos converter o resultado da busca, o valor a ser buscado no BD e o valor informado.
SELECT upper(last_name) FROM employees WHERE upper(last_name) = upper('king');
MANIPULAÇÃO
- SUBSTR - extrai uma string de tamanho determinado usando argumentos;
SELECT SUBSTR('EXTRAIR_STRING', 1, 7) FROM dual; = EXTRAIR
Obs.: o parâmetro ('String',-1, 1) traz o último caractere e assim por diante;
- INSTR - localiza uma posição numérica e pode receber mais argumentos para especificar uma posição;
SELECT INSTR('ACHAR_H', 'H') FROM dual; = 3
OU
SELECT INSTR('ACHAR_H', 'H', 4) FROM dual; = 7
- CONCAT - concatena no máximo dois valores informados;
SELECT CONCAT('VALOR_1', 'VALOR_02') FROM dual; = VALOR_1VALOR_02
Obs.: para concatenar mais de dois valores use a barra vertical dupla (||);
- LENGTH - conta o número total de caracteres no dado informado, inclusive espaçamentos;
SELECT LENGTH('VALOR ') FROM dual; = 6
- LPAD - retorna uma expressão de caractere preenchida à esquerda, onde é informado o tamanho total da string e o caractere que irá preencher o espaço;
SELECT LPAD ('VALOR', 10, '*') FROM dual; = *****VALOR
- RPAD - retorna uma expressão de caractere preenchida à direita , onde é informado o tamanho total da string e o caractere que irá preencher o espaço;
SELECT RPAD ('VALOR', 10, '*') FROM dual; = VALOR*****
- TRIM - retira os caracteres informados no argumento, podendo retirar somente os da esquerda (LEADING), da direita (TRAILING) ou ambos (BOTH);
SELECT TRIM( trailing 'O' FROM 'O RESULTADOOO') FROM dual; = O RESULTAD
- REPLACE - substitui uma determinada string por outra previamente informada.
SELECT REPLACE( 'RESULTADO', 'RE', 'IN') FROM dual; = INSULTADO
Funções de número
As funções de número aceitam somente valores numéricos e retornam números. Algumas das funções são as seguintes:
Curiosidade: esta função normalmente é utilizada para definir se o número é ímpar ou par e ela também é utilizada pelo Oracle como função de hash.
- ROUND - arredonda um determinado valor, podendo ser informado o número de decimais (números após o ponto) ou não. Caso não seja especificado, por padrão não haverão números após o ponto;
SELECT ROUND( 1862.55 ) FROM dual; = 1863
OU
SELECT ROUND( 1862.55, 1 ) FROM dual; = 1862.6
OU AINDA
SELECT ROUND( 1862.55, -1 ) FROM dual; = 1860
- TRUNC - trunca o valor do registro numérico, podendo ser informado o número de decimais (números após o ponto) ou não. Caso não seja especificado, por padrão não haverão números após o ponto;
SELECT TRUNC( 1862.55 ) FROM dual; = 1862
OU
SELECT TRUNC( 1862.55, 1 ) FROM dual; = 1862.5
OU AINDA
SELECT TRUNC( 1862.55, -2 ) FROM dual; = 1800
- MOD - retorna o resto de uma divisão;
SELECT MOD( 1500, 400 ) FROM dual; = 300
Curiosidade: esta função normalmente é utilizada para definir se o número é ímpar ou par e ela também é utilizada pelo Oracle como função de hash.
Funções de data
As funções de data aceitam valores do tipo DATE e retornam o mesmo tipo de dado informado, com exceção da função MONTHS_BETWEEN, que retorna um número referente aos meses entre um período e outro. Algumas das funções são as seguintes:




