SQL em Oracle > DML > Funções > Funções de linha > Funções de manipulação de caracter
Funções de manipulação de caracter tl_logo2.jpg

Estas funções aceitam como argumento(s) caracteres e devolvem caracteres ou valores numéricos:



LOWER(string)

Converte 'string' para letras minúsculas. Ex:

select LOWER(dname), LOWER('Curso SQL')
from dept;
LOWER(DNAME)   LOWER('CURSOSQL') 
-------------- ----------------- 
accounting     curso sql         
research       curso sql         
sales          curso sql         
operations     curso sql         

4 rows selected

bthome.gifTopo


UPPER(string)

Converte 'string' para letras maiúsculas.

select first_name, UPPER(first_name) 
from employees
where rownum <= 4;
FIRST_NAME           UPPER(FIRST_NAME)    
-------------------- -------------------- 
Ellen                ELLEN                
Sundar               SUNDAR               
Mozhe                MOZHE                
David                DAVID                

4 rows selected

bthome.gifTopo


INITCAP(string)

Impõe uma letra maiúscula na primeira letra de cada palavra e minúsculas nas restantes.

select dname, INITCAP(dname)
from dept;
DNAME          INITCAP(DNAME) 
-------------- -------------- 
ACCOUNTING     Accounting     
RESEARCH       Research       
SALES          Sales          
OPERATIONS     Operations     

4 rows selected

bthome.gifTopo


CONCAT(string1,string2);

Devolve a concatenação de string1 com string2. É uma alternativa ao operador ||:

select concat(ename, job), concat(empno,ename)
from emp;
CONCAT(ENAME,JOB)   CONCAT(EMPNO,ENAME)                                
------------------- -------------------------------------------------- 
SMITHCLERK          7369SMITH                                          
ALLENSALESMAN       7499ALLEN                                          
WARDSALESMAN        7521WARD                                           
JONESMANAGER        7566JONES                                          
MARTINSALESMAN      7654MARTIN                                         
BLAKEMANAGER        7698BLAKE                                          
CLARKMANAGER        7782CLARK                                          
SCOTTANALYST        7788SCOTT                                          
KINGPRESIDENT       7839KING                                           
TURNERSALESMAN      7844TURNER                                         
ADAMSCLERK          7876ADAMS                                          
JAMESCLERK          7900JAMES                                          
FORDANALYST         7902FORD                                           
MILLERCLERK         7934MILLER                                         

14 rows selected

bthome.gifTopo


LPAD (string1,n,string2);

São reservados n caracteres para output. A string1 é encostada à direita, sendo o espaço à esquerda preenchido com string2. Em caso de omissão de string2 o espaço é preenchido com espaços em branco.

select LPAD(dname,20), LPAD(dname,20,'*'), LPAD(dname,20,'*-')
from dept;
LPAD(DNAME,20)       LPAD(DNAME,20,'*')   LPAD(DNAME,20,'*-')  
-------------------- -------------------- -------------------- 
          ACCOUNTING **********ACCOUNTING *-*-*-*-*-ACCOUNTING 
            RESEARCH ************RESEARCH *-*-*-*-*-*-RESEARCH 
               SALES ***************SALES *-*-*-*-*-*-*-*SALES 
          OPERATIONS **********OPERATIONS *-*-*-*-*-OPERATIONS 

4 rows selected

bthome.gifTopo


RPAD (string1,n,string2);

São reservados n caracteres para output. A string1 é encostada à esquerda, sendo o espaço à direita preenchido com string2. Em caso de omissão de string2 o espaço é preenchido com espaços em branco.

select RPAD(dname,20), RPAD(dname,20,'*'), RPAD(dname,20,'*-')
from dept;
RPAD(DNAME,20)       RPAD(DNAME,20,'*')   RPAD(DNAME,20,'*-')  
-------------------- -------------------- -------------------- 
ACCOUNTING           ACCOUNTING********** ACCOUNTING*-*-*-*-*- 
RESEARCH             RESEARCH************ RESEARCH*-*-*-*-*-*- 
SALES                SALES*************** SALES*-*-*-*-*-*-*-* 
OPERATIONS           OPERATIONS********** OPERATIONS*-*-*-*-*- 

4 rows selected

bthome.gifTopo


SUBSTR(string1,pos,n);

Esta função pressupõe que os caracteres numa cadeia são numerados da esquerda para a direita, começando em 1. Devolve a substring de 'string1' que começa na posição 'pos' e tem comprimento n. Se o parametro 'n' for omitido, devolve todos os caracteres desde a posição 'pos' até ao fim.

select SUBSTR('ORACLE',2,4), SUBSTR(dname,2), substr(dname,3,5)
from dept;
SUBSTR('ORACLE',2,4) SUBSTR(DNAME,2) SUBSTR(DNAME,3,5) 
-------------------- --------------- ----------------- 
RACL                 CCOUNTING       COUNT             
RACL                 ESEARCH         SEARC             
RACL                 ALES            LES               
RACL                 PERATIONS       ERATI             

4 rows selected

bthome.gifTopo


INSTR(string1,string2);

Devolve a posição da primeira ocorrência de string2 dentro de string1.

INSTR(string1,string2,pos,n);

Devolve a posição da n-ésima ocorrência de string2 dentro de string1 a partir da posição 'pos'.

select dname, INSTR(dname,'A'), INSTR(dname,'ES'), INSTR(DNAME,'C',1,2)
from dept
DNAME          INSTR(DNAME,'A')       INSTR(DNAME,'ES')      INSTR(DNAME,'C',1,2)   
-------------- ---------------------- ---------------------- ---------------------- 
ACCOUNTING     1                      0                      3                      
RESEARCH       5                      2                      0                      
SALES          2                      4                      0                      
OPERATIONS     5                      0                      0                      

4 rows selected

bthome.gifTopo


LTRIM(string1,string2);

Retira todas as ocorrências de string2 dentro de string1 que estejam encostadas à esquerda. Se string2 for omitida, retira todos os espaços em branco do lado esquerdo. Note-se que são retiradas também as strings formadas por combinações de caracteres que pertencem ao conjunto das letras de string2. Repare-se no exemplo abaixo em 'AS'.

select dname, LTRIM(dname,'A'), LTRIM(dname,'AS'), LTRIM(dname,'ASOP')
from dept;
DNAME          LTRIM(DNAME,'A') LTRIM(DNAME,'AS') LTRIM(DNAME,'ASOP') 
-------------- ---------------- ----------------- ------------------- 
ACCOUNTING     CCOUNTING        CCOUNTING         CCOUNTING           
RESEARCH       RESEARCH         RESEARCH          RESEARCH            
SALES          SALES            LES               LES                 
OPERATIONS     OPERATIONS       OPERATIONS        ERATIONS            

4 rows selected

bthome.gifTopo


RTRIM(string1,string2);

Retira todas as ocorrências de string2 dentro de string1 que estejam encostadas à direita. Se string2 for omitida, retira todos os espaços em branco do lado direito. Note-se que são retiradas também as strings formadas por combinações de caracteres que pertencem a string2.

select dname, RTRIM(dname,'G'), RTRIM(dname,'GHS'), RTRIM(dname,'N'), RTRIM(dname,'SEL')
from dept;
DNAME          RTRIM(DNAME,'G') RTRIM(DNAME,'GHS') RTRIM(DNAME,'N') RTRIM(DNAME,'SEL') 
-------------- ---------------- ------------------ ---------------- ------------------ 
ACCOUNTING     ACCOUNTIN        ACCOUNTIN          ACCOUNTING       ACCOUNTING         
RESEARCH       RESEARCH         RESEARC            RESEARCH         RESEARCH           
SALES          SALES            SALE               SALES            SA                 
OPERATIONS     OPERATIONS       OPERATION          OPERATIONS       OPERATION          

4 rows selected

Este comando é particularmente útil para retirar espaços indesejados à direita de uma string. Ao introduzir dados para uma coluna (por exemplo ENAME da tabela EMP) podem ser introduzidos espaços em branco à direita, que além de ocupar espaço, podem dificultar as pesquisas. Com LTRIM é possível retirar esses espaços, por exemplo: UPDATE emp SET ename=RTRIM(ename);

bthome.gifTopo



LENGTH(string1);

Devolve o comprimento de string1.

select LENGTH('curso de sql'), LENGTH(deptno), LENGTH(dname)
from dept;
LENGTH('CURSODESQL')   LENGTH(DEPTNO)         LENGTH(DNAME)          
---------------------- ---------------------- ---------------------- 
12                     2                      10                     
12                     2                      8                      
12                     2                      5                      
12                     2                      10                     

4 rows selected

bthome.gifTopo


TRANSLATE(string1,c1,c2);

Substitúi um caracter por outro. Converte todas as ocorrências do caracter c1 de string1 para c2. Podem ser colocados vários caracteres. Se c2 for omitido, c1 é convertido para espaço em branco. No exemplo abaixo o caracter A é substituído por I e R por T.

select ename, TRANSLATE(ename,'C','P'), job, TRANSLATE(job,'AR','IT')
from EMP;
ENAME      TRANSLATE(ENAME,'C','P') JOB       TRANSLATE(JOB,'AR','IT') 
---------- ------------------------ --------- ------------------------ 
SMITH      SMITH                    CLERK     CLETK                    
ALLEN      ALLEN                    SALESMAN  SILESMIN                 
WARD       WARD                     SALESMAN  SILESMIN                 
JONES      JONES                    MANAGER   MINIGET                  
MARTIN     MARTIN                   SALESMAN  SILESMIN                 
BLAKE      BLAKE                    MANAGER   MINIGET                  
CLARK      PLARK                    MANAGER   MINIGET                  
SCOTT      SPOTT                    ANALYST   INILYST                  
KING       KING                     PRESIDENT PTESIDENT                
TURNER     TURNER                   SALESMAN  SILESMIN                 
ADAMS      ADAMS                    CLERK     CLETK                    
JAMES      JAMES                    CLERK     CLETK                    
FORD       FORD                     ANALYST   INILYST                  
MILLER     MILLER                   CLERK     CLETK                    

14 rows selected

bthome.gifTopo


REPLACE(string1,string2,string3);

Trabalhando sobre a string1, converte todas as ocorrências de string2 para string3. Se string3 for omitida, string2 é convertida em espaço em branco.

select job, REPLACE(job,'SALESMAN','VENDEDOR')
from emp;

select ename, REPLACE(ename,'CO','PX')
from emp;
JOB       REPLACE(JOB,'SALESMAN','VENDEDOR')                                       
--------- ------------------------------------------------------------------------ 
CLERK     CLERK                                                                    
SALESMAN  VENDEDOR                                                                 
SALESMAN  VENDEDOR                                                                 
MANAGER   MANAGER                                                                  
SALESMAN  VENDEDOR                                                                 
MANAGER   MANAGER                                                                  
MANAGER   MANAGER                                                                  
ANALYST   ANALYST                                                                  
PRESIDENT PRESIDENT                                                                
SALESMAN  VENDEDOR                                                                 
CLERK     CLERK                                                                    
CLERK     CLERK                                                                    
ANALYST   ANALYST                                                                  
CLERK     CLERK                                                                    

14 rows selected

ENAME      REPLACE(ENAME,'CO','PX') 
---------- ------------------------ 
SMITH      SMITH                    
ALLEN      ALLEN                    
WARD       WARD                     
JONES      JONES                    
MARTIN     MARTIN                   
BLAKE      BLAKE                    
CLARK      CLARK                    
SCOTT      SPXTT                    
KING       KING                     
TURNER     TURNER                   
ADAMS      ADAMS                    
JAMES      JAMES                    
FORD       FORD                     
MILLER     MILLER                   

14 rows selected

bthome.gifTopo


Realizado por Turtle Learning ®. Última alteração em 2011-02-26