Mascara para RG em campo VARCHAR

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
carlitu
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Ter, 09 Dez 2008 8:24 am
Localização: São Paulo/Praia Grande - SP

Olá,

Tenho uma tabela com campo cdRegistroGeral varchar(20)
tem algum jeito de formatar este registro para ser inserirdo como

xx.xxx.xxx.-xx

?
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Já vi alguns "format_mask" no Report, se não me engano, mas, no PL mesmo, costumo fazer "na mão" quando preciso:;

Selecionar tudo

SELECT SUBSTR('27123456X',1,2)||'.'||
       SUBSTR('27123456X',3,3)||'.'||
       SUBSTR('27123456X',6,3)||'.'||
       SUBSTR('27123456X',9,1) RG
FROM dual;
Daí tem como dar uma melhorada, pois provavelmente utilizará zeros e tal, mas, fica ai a dica.

Qualquer coisa, manda pra gente.
bertosro
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 88
Registrado em: Sex, 18 Ago 2006 11:13 am
Localização: São Paulo - SP
Bertosro
MSN / TALK - roberto.fernandes@gmail.com

TROQUE A STRING 'ABCDEFGHIJKLMNZ' PELO NUMERO DO RG

Selecionar tudo

SELECT SUBSTR(a.limpo,1,1)||'.'||SUBSTR(a.limpo,2,3)||'.'||SUBSTR(a.limpo,5,3)||'.'||
       SUBSTR(a.limpo,8,3)||'.'||SUBSTR(a.limpo,11,4)||'-'||SUBSTR(a.limpo,15,2)
  FROM (SELECT TO_CHAR(LPAD ('ABCDEFGHIJKLMNZ', 16, '0')) limpo
          FROM DUAL) a
BERTOSRO :-o
Avatar do usuário
Toad
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 253
Registrado em: Sex, 18 Nov 2005 2:14 pm
Localização: Seattle, WA
Contato:
Matheus Gonçalves
matheus.dev
twitter.com/developer__c

Fiz o teste aqui e seu método está estranho. Para RG de qual estado você usou essa máscara?

Teste:
Usando um RG qualquer, por exemplo '222000348'

O retorno é:

0.000.000.222.0003-48

A máscara padrão de RG é 99.999.999-Y no estado de SP e em mais alguns estados, mas não existe um padrão nacional. Pode acontecer, inclusive, de duas pessoas de estados diferentes terem o mesmo número de RG. Talvez por isso tenha sido criado o CPF, um cadastro nacional.

Para usar o formato citado acima, podemos usar o seguinte:

Selecionar tudo

 select
  SUBSTR(a.limpo,1,2)||'.'||
  SUBSTR(a.limpo,3,3)||'.'||
  SUBSTR(a.limpo,6,3)||'-'||
  SUBSTR(a.limpo,9,1)
   FROM (SELECT TO_CHAR(LPAD ('222504879', 9, '0')) limpo FROM DUAL) a 
ou

Selecionar tudo

          
  select
  SUBSTR(a.limpo,1,2)||'.'||
  SUBSTR(a.limpo,3,3)||'.'||
  SUBSTR(a.limpo,6,3)||'-'||
  SUBSTR(a.limpo,9,1)
  FROM (SELECT TO_CHAR(LPAD ('22250487X', 9, '0')) limpo FROM DUAL) a        
 


Dica: Para funcionar essa máscara, é interessante antes de usá-la, remover pontos e traços, caso existam.
Para fazer isso, dá pra usar o translate:

Selecionar tudo

  
  select translate('22.250.487-X',' .-', ' ') RG from dual  


http://glufke.net/oracle/viewtopic.php? ... r+tra%E7os
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante