• 0
Sign in to follow this  
didism2

LISTANDO REGISTROS DE UMA COLUNA E SUBSTITUINDO UM TRECHO DELA POR OUTRA

Question

Olá Senhores, tudo bem com vocês ?

Bom ,sou leigo em SQL e estou com um problema que é o seguinte:

Estou usando o PostGreSQL

Tennho uma tabela chamada OfMessageArchive , contendo a coluna FROMJID

Nessa tabela tenho diversos registros que estão como [email protected] , [email protected] , [email protected] e por aí vai.

Acredito que uns 15 dominios de e-mails diferentes. Não sei quais são todos eles.

Tendo essas informações preciso alterar por exemplo tudo que esteja como @hotmail.com para @empresa.com.br , tudo o que esteja como @bol.com.br , para @empresa.com.br e por aí vai , deixando tudo como [email protected] , [email protected] , [email protected] e por aí vai.

Preciso então de 2 comandos , e essas são as minhas dúvidas:

1 - Qual comando eu comando eu consigo listar todos os registros nessa coluna que estão com @ alguma coisa , sem ter que repeti-los ( estamos falando de quase 45.000 registros) ? 

Exemplo:

Após executar o comando ele mostra que na coluna FROMJID tem os dominios:
@bol.com.br 
@hotmail.com
@gmail.com 

??????????

2 - Eu sabendo quais são os dominios de e-mail que estão cadastrados na coluna FROMJID da tabela OfMessageArchive , qual o comando eu uso para substiruir todos esses dominios @bol.com.br , @gmail.com e por aí vai , por @empresa.com.br , deixando por exemplo [email protected] para [email protected] ?

Muito obrigado galera

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

1 - Qual comando eu comando eu consigo listar todos os registros nessa coluna que estão com @ alguma coisa , sem ter que repeti-los ( estamos falando de quase 45.000 registros) ? 
R. você deve usar distinct on 'field' para evitar que duplique, depois você faz um substring com expressao regular para trazer tudo q vier depois do '@'.

select
distinct on (substring(email,'[^@]*$'))
substring(email,'[^@]*$')
from
pessoa

 

Edited by Dr. House

Share this post


Link to post
Share on other sites
  • 0

Para listar os domínios você pode fazer o seguinte:

SELECT DISTINCT substring("FROMJID" from position('@' in "FROMJID")) FROM "OfMessageArchive";

E para substituir todos por "empresa.com.br" você pode fazer:

UPDATE "OfMessageArchive" SET "FROMJID"=concat(substring("FROMJID" for position('@' in "FROMJID")),'empresa.com.br');

Certo?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this