Esse capitulo mostra algumas funções do Oracle.
Parte 2

Curiosidades:

  • São funções simples, que retornam um resultado, por exemplo: UPPER / lower;
  • Podem ser usados no SELECT/DELETE na clausula WHERE, no UPDATE na clausula SET e/ou WHERE e INSERT na lsita de valores;
Funções String:

Upper(String1);
Lower(String1);
Initcap(String1);
|| ou Concat(String1,String2);
Lpad ou Rpad(String1, Número, String2)
Sem String2 usa espaço em branco como default;
Ltrim ou Rtrim(String1, String2)
Sem String2 usa espaço em branco como default;

Trim(trim_info trim_string FROM trim_source)
trim_info:
leading – remove trim_string do inicio da trim_source;
trailing – remove trim_string do final da trim_source;
both – remove trim_string de ambos os lados da trim_source – Defualt;
trim_string: omitido usa espaço em branco como default;
Length(String1);
Instr(String1, String2, Posicao_Inicial, Nr_Ocorrencia)
Posicao_Inicial e Nr_Ocorrencias não são obrigatórios e o default é 1;
Resultado é numérico que diz em que posição aconteceu a Nr_Ocorrencia procurada;
Substr(String1, Posicao_Inicial, Tamanho)
Tamanho é opcional e ao não passar vai até o final da String1;
Soundex(String1);

Exemplos:

 Select Upper('maiúsculo') From Dual;

Select Lower('MINÚSCULO')
From Dual;

 Select Initcap('pRIMEIRA mAiscula SEMPRE') From Dual;

 Select Concat('Concatenar: String1 ', 'String2') From Dual;

 Select 'Concatenar ||: ' || 'String1 ' || ' String2' From Dual;

Select Lpad('Prenche com a STRING2 a DIREITA na quantidade do NUMERO (posições)', 100, '.') 
From Dual Union Select Lpad('segundo exemplo para ver como ficou', 100, '.') From Dual;


 Select Rpad('Prenche com a STRING2 a DIREITA na quantidade do NUMERO (posições)', 100, '.') 
From Dual;

 Select Ltrim(' Tira Espaço Esquerda') From Dual 
Union Select Ltrim('111111Tira ''String2'' Esquerda', '1')  From Dual 
Union Select Ltrim('111111Tira ''String2'' Esquerda', '2') From Dual;

 Select Rtrim(' Tira Espaço Direita ') From Dual 
Union Select Rtrim('Tira ''String2'' Diretia 11111111111', '1') From Dual 
Union Select Rtrim('Tira ''String2'' Esquerda 333333333', '2') From Dual;

 Select Trim(' Default ') From Dual 
Union Select Trim(' ' From ' Sem both ') From Dual 
Union Select Trim(Both ' ' From ' Com both ') From Dual;
 Select Trim(Leading '1' From '111111Tira ''trim_string'' Esquerda') 
From Dual;

 Select Trim(Trailing '1' From 'Tira ''trim_string'' Direita 11111111111') From Dual;

 Select Length('Tamanho da String') From Dual;

 Select Instr('teste esta testado', 'te') Posicao_Na_String From Dual;

 Select Instr('teste esta testado', 'te', 2) Posicao_Na_String From Dual;

 Select Instr('teste esta testado', 'te', 1, 3) Posicao_Na_String From Dual;

 Select Substr('1111 Teste um', 6) From Dual 
Union Select Substr('1111 Teste um', 6, 5) From Dual;

 Select Soundex('Rafael') From Dual 
Union All Select Soundex('Raphael') From Dual;

Funções Matemáticas:
Round(Number, Integer)
Integer se for omitido default é 0;
Trunc(Number, Integer)
Integer se for omitido default é 0;
Remainder(Number1, Number2)
Indentifica a multiplicidade do Number2 em relação ao Number1 e retorna a diferença entre os valores;
Mod(Number1, Number2);

Exemplos:

Select Round(1.89991, 0), 
Round(1.89991, 3), 
Round(25, -1), 
Round(3.1745165454, 3), 
Round(0.916241515) 
From Dual;

 Select Trunc(1.89991, 0), 
Trunc(1.89991, 3), 
Trunc(25, -1), 
Trunc(3.1745165454, 3), 
Trunc(0.916241515) 
From Dual;

 Select Remainder(3, 2), Remainder(4, 2), 
Remainder(5, 2), Remainder(6, 2) From Dual;

 Select Mod(3, 2), Mod(4, 2), 
Mod(5, 3), Mod(6, 3) From Dual;

Funçoes Date:
Sysdate – Hora corrente do sistema;
Round(Data1, Formato)
Formato é opcional;
Arredonda conforme o Formato, mesmo que Round visto nas funções numéricas;
Trunc(Data1, Formato)
Formato é opcional;
Trunca conforme o Formato, mesmo que Trunc visto nas funções numéricas;
Next_day(Data1, Referencia)
Referencia a qual dia da semana (SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY);
Pode estar em portugues o BD (SEGUNDA, TERÇA, QUARTA, QUINTA, SEXTA, SÁBADO, DOMINGO) para descobrir: Select To_Char(Sysdate, ‘DAY’) From Dual;
Last_day(Data1);
Add_Months(Data1, Quantidade);
Months_Between(Data1, Data2);
Numtoyminterval(Numero, Unidade_Intervalo)
Unidade_Intervalo somente MONTH ou YEAR;
Converte o Numero para Ano ou Mês, conforme parametro;
Numtodsinterval(Numero, Unidade_Intervalo)
Unidade_Intervalo DAY, HOUR, MINUTE ou SECOND;

Exemplos:

 Select Sysdate From Dual;

 Select Sysdate, Round(Sysdate, 'mm') Arrendonda_Mes, Round(Sysdate) Arredonda_Data, 
Round(Sysdate, 'YY') Arredonda_Ano From Dual;

 Select Sysdate, Trunc(Sysdate, 'mm') Trunc_Este_Mes, Trunc(Sysdate) Trunc_Este_Dia, 
Trunc(Sysdate, 'YY') Trunc_Este_Ano From Dual;

 Select Next_Day(Sysdate, 'SÁBADO'), Next_Day(Sysdate, 'TERÇA'), 
Next_Day(Sysdate, 'Domingo') From Dual;

 Select Last_Day(Sysdate) Ultimo_Dia_Mes From Dual;

 Select Sysdate, add_months(Sysdate,5) Mais_Cinco_Meses From Dual;

 Select Sysdate, Months_Between(Sysdate, Sysdate + 365), 
Months_Between(Sysdate, Add_Months(Sysdate, 5)),
 Months_Between(Add_Months(Sysdate, 5), Sysdate) From Dual;

 Select Numtoyminterval(27, 'MONTH') Anos_Para_Mes, 
Numtoyminterval(1, 'YEAR') Anos_Para_Ano, 
Numtoyminterval(24, 'MONTH') Anos_Para_Mes From Dual;

 Select Numtodsinterval(60, 'MINUTE') Minuto_Hora, 
Numtodsinterval(23, 'DAY') Dia_Hora, 
Numtodsinterval(60, 'SECOND') Segundo_Minuto From Dual;

Respostas:

Os SQLs abaixo executam?

 Select 'TESTE'
 From Dual
 Where 'TESTE' = Null;

Select 'TESTE'
 From Dual
 Where Null = Null;

SIM NAO
NAO NAO
SIM SIM
NAO SIM

Book: SQL Certified Expert Exam Guide, Steve O’Hearn pela Oracle Press
Link Book na Amazon

Att,
capin