domingo, 15 de novembro de 2009

Trabalhando com strings

1. Concatenando 2 strings
Existem duas formas de trabalhar concatenando strings. CONCAT e PIPE
Concat:


1.SQL: SELECT CONCAT ('Rodrigo ', 'Valentim') FROM dual;
2.CONCAT('RODRIGO','VALENTIM')
3.----------------------------
4.Rodrigo Valentim

Usando PIPE:
1.SQL: SELECT 'Rodrigo '||'Valentim' FROM dual;
2.'RODRIGO'||'VALENTIM'
3.---------------------
4.Rodrigo Valentim

2. Colocando a primeira letra do texto como Maiúscula.

1.SQL: SELECT INITCAP('rodrigo valentim') FROM dual;
2.INITCAP('RODRIGOVALENTIM')
3.--------------------------
4.Rodrigo Valentim

3. Alternar entre Maiúscula e Minúscula
1.SQL: SELECT LOWER('RODRIGO ')||UPPER('valentim') FROM dual;
2.LOWER('RODRIGO')||UPPER('VALEN
3.------------------------------
4.rodrigo VALENTIM

4. Convertendo letras em códigos ASCII
01.SQL: SELECT ASCII('A') FROM dual;
02.ASCII('A')
03.----------
04.65
05.  
06.SQL: SELECT ASCII('Z') FROM dual;
07.ASCII('Z')
08.----------
09.90
10.  
11.SQL: SELECT ASCII('a') FROM dual;
12.ASCII('A')
13.----------
14.97
15.  
16.SQL: SELECT ASCII('z') FROM dual;
17.ASCII('Z')
18.----------
19.122
20.  
21.SQL: SELECT ASCII(' ') FROM dual;
22.ASCII('')
23.----------
24.32

5. Localizando a posição uma string no meio do texto
Com a função INSTR, é possível localizar caracteres dentro de um texto, de forma normal ou inversa.

Localizando a primeira posição da string no texto
1.SQL: SELECT INSTR('Exemplo de como realizar pesquisa em uma string', 'r', 1, 1) localiza_1 from dual;
2.LOCALIZA_1
3.----------
4.17

Localizando a segunda posição da string no texto
1.SQL: SELECT INSTR('Exemplo de como realizar pesquisa em uma string', 'r', 1, 2) localiza_2 from dual;
2.LOCALIZA_2
3.----------
4.24

Localizando a terceira posição da string no texto
1.SQL: SELECT INSTR('Exemplo de como realizar pesquisa em uma string', 'r', 1, 3) localiza_3 from dual;
2.LOCALIZA_3
3.----------
4.44

Localizando a quarta posição da string no texto, como não existe mais de 3 letras r no texto, ele retorna zero.
1.SQL: SELECT INSTR('Exemplo de como realizar pesquisa em uma string', 'r', 1, 4) localiza_4 from dual;
2.LOCALIZA_4
3.----------
4.0

Para realizar a mesma pesquisa so que de ordem inversa, basta usar o valor negativo na função
1.SQL: SELECT INSTR('Exemplo de como realizar pesquisa em uma string', 'r', -1, 1) localiza_1 from dual;
2.LOCALIZA_1
3.----------
4.44

Nestas condições, ele me retorna a primeira posição na ordem inversa, ou seja, a última.

6. Atribuindo dígitos no final e/ou no inicio do texto.
Temos como usar o LPAD para inserir digitos na esquerda e RPAD para inserir digitos na direita.
LPAD:

1.SQL: SELECT LPAD('Rodrigo Valentim', 25, 'x') FROM dual;
2.LPAD('RODRIGOVALENTIM',25,'X')
3.------------------------------
4.xxxxxxxxxRodrigo Valentim

RPAD:
1.SQL: SELECT RPAD('Rodrigo Valentim', 25, 'x') FROM dual;
2.RPAD('RODRIGOVALENTIM',25,'X')
3.------------------------------
4.Rodrigo Valentimxxxxxxxxx

7.Removendo dígitos do inicio ou do fim ou de ambos do texto
Podendo ser espaços em branco ou letras (TRIM só remove espaços em branco).
LTRIM:

1.SQL: SELECT '*' || LTRIM('               Rodrigo Valentim               ') || '*' FROM dual;
2.'*'||LTRIM('RODRIGOVALENTIM')|
3.---------------------------------
4.*Rodrigo Valentim               *

RTRIM:
1.SQL: SELECT '*' || RTRIM('               Rodrigo Valentim               ') || '*' FROM dual;
2.'*'||RTRIM('RODRIGOVALENTIM')|
3.---------------------------------
4.*               Rodrigo Valentim*

TRIM:
1.SQL: SELECT '*'||TRIM('   Rodrigo Valentim   ')||'*' FROM dual;
2.'*'||TRIM('RODRIGOVALENTIM')||
3.------------------------------
4.*Rodrigo Valentim*

8. Como inverter o conteúdo em uma string
1.SQL: select reverse('MITNELAV OGIRDOR') from dual;
2.REVERSE('MITNELAVOGIRDOR')
3.--------------------------
4.RODRIGO VALENTIM

9. Substituindo Strings por outras Strings
Com a Função Replace é possível substituir o conjunto de caracteres por outro, no exemplo abaixo, ele vai alterar o valor DE para A

1.SQL: SELECT REPLACE('ABCDE','DE','A') FROM dual;
2.REPLACE('ABCDE','DE','A')
3.-------------------------
4.ABCA

10. Cortando conteúdo do texto com SUBSTR
Com essa função, é possível exibir somente partes do texto. No exemplo abaixo, digo que quero iniciar meu texto da posição 3 e andar mais 9 dígitos.
1.SQL: SELECT SUBSTR('Rodrigo Valentim', 3, 9) FIRST_FOUR FROM dual;
2.FIRST_FOUR
3.----------
4.drigo Val

11. Descobrindo o tamanho da string com a função LENGTH.
1.SQL: SELECT LENGTH('Rodrigo Valentim') FROM dual;
2.LENGTH('RODRIGOVALENTIM')
3.-------------------------
4.16

12. Retornando colunas com valor não nulo
Com a função COALESCE. Ela pesquisa entre as colunas passada e retorna o primeiro valor não nulo que foi encontrado.

1.SQL: create table artigo_coalesce(col1 varchar2(10), col2 varchar2(10), col3 varchar2(10), col4 varchar2(10));
2.Table created
01.SQL: insert into artigo_coalesce values (NULL, NULL, 'C','D');
02.1 row inserted
03.SQL: insert into artigo_coalesce values (NULL, 'A', 'C','D');
04.1 row inserted
05.SQL: insert into artigo_coalesce values ('B', 'A', 'C','D');
06.1 row inserted
07.SQL: insert into artigo_coalesce values (NULL, 'D', NULL,'A');
08.1 row inserted
09.SQL: SELECT COALESCE(COL1, COL2, COL3, COL4) FROM artigo_coalesce;
10.COALESCE(COL1,COL2,COL3,COL4)
11.-----------------------------
12.C
13.A
14.B
15.D

13.1 Pesquisando em uma string por um digito e exibindo o resto
Pesquisando em uma string por um digito e exibindo o resto da string pegando como base esse digito localizado. Bom, primeiro preciso saber qual a posição que preciso começar, neste caso, vou iniciar pela '\'. Vou pesquisar do fim para o inicio e localizar neste caso, a localização da ultima barra.

1.SQL: select INSTR('c:\arquivo\arquivo.txt', '\', -1, 1) from dual;
2.INSTR('C:\ARQUIVO\ARQUIVO.TXT'
3.------------------------------
4.11

Depois de localizar, preciso então usar ela como ponto inicial e ir até o final da string completa. Como não sei o tamanho total da minha string, pois, pode ser que ela mude algum dia, vou usar a função LENGTH que me retornará o tamanho total.
1.SQL: SELECT substr('c:\arquivo\arquivo.txt',INSTR('c:\arquivo\arquivo.txt', '\', -1, 1) ,length('c:\arquivo\arquivo.txt')) from dual;
2.SUBSTR('C:\ARQUIVO\ARQUIVO.TXT
3.------------------------------
4.\arquivo.txt

Depois de localizar o inicio e fim da minha string através das funções acima, preciso ajustar para que a barra não saia… a função SUBSTR está iniciando da posição 11 e indo até a posição final da string, por isso está me retornando a barra, então, preciso somar + 1 ao retorno da localização da '\', para então ela não aparecer no meu resutlado.
1.SQL: SELECT substr('c:\arquivo\arquivo.txt',INSTR('c:\arquivo\arquivo.txt', '\', -1, 1) + 1 ,length('c:\arquivo\arquivo.txt')) from dual;
2.SUBSTR('C:\ARQUIVO\ARQUIVO.TXT
3.------------------------------
4.arquivo.txt

Então, andando da posição 12 até a ultima posição, consigo através do substr cortar parte do texto e extrair somente o que desejo.

13.2 Pegar uma String e inserir um valor no meio dela
Eu tenho uma String chamada 'Existe Perfeita ' e quero inserir o Lógica no meio dela utilizando uma query…

Pegando trechos do ultimo exemplo (13.1) vamos montar nossa query e assim ter nosso retorno…
Primeiro preciso pegar o espaço em branco, levando em consideração que é o meio da string.
1.SQL: SELECT instr('Existe Perfeita ',' ') FROM dual;
2.INSTR('EXISTEPERFEITA ','')
3.---------------------------
4.7

Agora vamos cortar somente o inicio da string, com SUBSTR vamos pegar da posição 1 até o espaço em branco (posição 7)
1.SQL: SELECT substr('Existe Perfeita ',1,instr('Existe Perfeita ',' ')) FROM dual;
2.SUBSTR('EXISTEPERFEITA ',1,INS
3.------------------------------
4.Existe

Temos então somente o Existe. Vamos então inserir (concatenar) o texto que queremos e ter como resultado o Existe Lógica
1.SQL: SELECT substr('Existe Perfeita ',1,instr('Existe Perfeita ',' '))||'Lógica' FROM dual;
2.SUBSTR('EXISTEPERFEITA ',1,INS
3.------------------------------
4.Existe Lógica

Agora falta inserir a parte final… vamos então pegar a String inicial e então cortar a parte do meio até o fim. Já sei qual o meio e para descobrir o fim é só usar a função LENGTH e então temos o resultado que queremos.
1.SQL: SELECT substr('Existe Perfeita ',1,instr('Existe Perfeita ',' '))||'Logica'||substr('Existe Perfeita ',instr('Existe Perfeita ',' '),length('Existe Perfeita ')) "Existe " FROM dual;
2.Existe  
3.-----------------------
4.Existe Logica Perfeita

0 comentários:

Postar um comentário