Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mauricio Zanella

Embaralhar dados de Nome e CPF

Recommended Posts

Olá amigos,

 

Tenho uma tabela que tem entre outros os campos NOME e CPF.

Preciso achar uma maneira de "descaracterizar" os dados desses 2 campos para repassar a tabela para outra pessoa, Pois a tabela contém Nomes e CPF de devedores.

 

Tem como fazer isso com SQL?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde,

 

Você pode criptografar esses dados, essa é uma maneira boa para "embaralhar" os dados

 

select encode(cast(nome as bytea),'base64'),encode(cast(cpf as bytea),'base64') from tabela1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde,

 

Você pode criptografar esses dados, essa é uma maneira boa para "embaralhar" os dados

 

select encode(cast(nome as bytea),'base64'),encode(cast(cpf as bytea),'base64') from tabela1.

 

 

Arndt,

 

Na verdade preciso do seguinte, (acho q me esprecei errado antes...)

 

Tenho uma tabela tblcliente com um campo strnomecliente [varchar(40)] e preciso remover parte do nome do cliente para que ele não possa ser reconhecido...

 

Pensei em fazer uma procedure que:

Selecione, linha a linha, o strnomecliente ;

Remova os caracteres após o 1º espaço em branco, ou deixe somente os 8 primeiros caracteres ;

Atualiza o registro com o novo valor.

 

Alguem pode me ajudar??? Preciso fazer esse script alterar todas as linhas da tabela, mas não sei como fazer ele passar liha por linha...

 

Muito obrigado pela ajuda!!!

 

 

CREATE TABLE tblcliente

(

intcodcliente integer NOT NULL,

intcodlojacliente integer NOT NULL,

strnomecliente character varying(40),

dtmdatacadastro date,

strtipopessoa character(1),

strendereco character varying(35),

intcodbairro integer,

strcep character(8),

intcodcidade integer,

intcodtipocliente integer,

strfone character varying(15),

stremail character varying(30),

strobservacao character varying(10485760),

strcnpjcpf character varying(14),

intcodfuncionario integer,

CONSTRAINT tblcliente_pkey PRIMARY KEY (intcodcliente, intcodlojacliente)

)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver parte do meu problema...

 

Criei uma coluna numreg e com um update fiz uma sequence preencher todos os numreg de todas as linhas da tabela,

 

então criei essa function:

 

CREATE OR REPLACE FUNCTION function_alteraregistros()
  RETURNS void AS
$BODY$DECLARE
    novonome varchar(40);
    cont integer;
    limite integer;

BEGIN

  cont = 1;
  SELECT INTO limite MAX(numreg) FROM tblcliente;

  FOR lacofor IN 1..limite LOOP

    SELECT INTO novonome strnomecliente 
    FROM tblcliente
    WHERE numreg = cont;
    
  -- Falta aqui a função para alterar novonome!!!

    UPDATE tblcliente 
    SET strcnpjcpf = 0000
       ,strnomecliente = novonome
    WHERE numreg = cont;

    cont = cont + 1;

    IF cont > limite THEN
      
    END IF;

  END LOOP;

END;$BODY$

 

Agora só falta fazer com que ela Remova os caracteres após o 1º espaço em branco, ou deixe somente os 8 primeiros caracteres! :unsure:

 

 

Alguém sabe como???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver parte do meu problema...

 

Criei uma coluna numreg e com um update fiz uma sequence preencher todos os numreg de todas as linhas da tabela,

 

então criei essa function:

 

CREATE OR REPLACE FUNCTION function_alteraregistros()
 RETURNS void AS
$BODY$DECLARE
 novonome varchar(40);
 cont integer;
 limite integer;

BEGIN

 cont = 1;
 SELECT INTO limite MAX(numreg) FROM tblcliente;

 FOR lacofor IN 1..limite LOOP

 SELECT INTO novonome strnomecliente 
 FROM tblcliente
 WHERE numreg = cont;
 
 -- Falta aqui a função para alterar novonome!!!

 UPDATE tblcliente 
 SET strcnpjcpf = 0000
 ,strnomecliente = novonome
 WHERE numreg = cont;

 cont = cont + 1;

 IF cont > limite THEN
 
 END IF;

 END LOOP;

END;$BODY$

 

Agora só falta fazer com que ela Remova os caracteres após o 1º espaço em branco, ou deixe somente os 8 primeiros caracteres! :unsure:

 

 

Alguém sabe como???

 

Para fazer ele quebrar a string no espaço em branco, você pode usar a função:

select split_part('PostgreSQL PHP',' ',1) = PostgreSQL

e para pegar os 8 primeiros caracteres, você usa:

substring(novonome,1,8) ou substring(split_part('PostgreSQL PHP',' ',1),1,8)

 

Espero que tenha entendido o que você quer

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.