Hum no exemplo:

SELECT regexp_replace(initcap('MARCELO ME NARDINI'), 
'([[:upper:]])(a|as|os|e)[[:blank:]]', E'd\\2 ', 'g');

Ele retorna “"Marcelo de Nardini"”

Veja que ele troca o “ME” por “de” como resolveriamos isso?



From: Marcelo da Silva 
Sent: Tuesday, February 08, 2011 7:53 AM
To: [email protected] ; Comunidade PostgreSQL Brasileira 
Subject: Re: [pgbr-geral] sql formatar nome

Fabrizio, muito boa sua ajuda... diga uma coisa tem alguma materia pra podermos 
entender essa select por partes pra futuras implementações?

Por exemplo a parte "(a|as|os)[[:blank:]]" significa que sempre que tiver um 
espaco depois de a,as,os ele vai deixas a palavra em minusculo?
Mas ai como ele vai saber que é "das, dos, de, etc"?

Interessante esse regexp_replace

Marcelo Silva
------------------------------



Em 7 de fevereiro de 2011 20:06, Fabrízio de Royes Mello 
<[email protected]> escreveu:



  Em 7 de fevereiro de 2011 18:09, Leonardo Cezar <[email protected]> escreveu: 



    Com um pouquinho mais de criatividade e tempo dá pra resolver melhor,
    mas é por aqui:

    SELECT regexp_replace(initcap('leonardo danubio henrique da silva dos
    santos cezar'), '([[:upper:]])(a|as|os)[[:blank:]]', E'd\\2 ', 'g');

                      regexp_replace
    -----------------------------------------------------
    Leonardo Danubio Henrique da Silva dos Santos Cezar
    (1 row)




  Só um ajuste para o caso de existir a preposição "de":

  postgres@bdteste=# SELECT regexp_replace(initcap('fabrizio de royes mello'), 
'([[:upper:]])(a|as|os|e)[[:blank:]]', E'd\\2 ', 'g');
       regexp_replace      
  -------------------------
  Fabrizio de Royes Mello
  (1 row)


  Ainda tens de incrementar um pouco essa expressão regular, pois pode existir 
um nome do tipo:

  fulano de tal souza e silva

  Usando a expressão acima fica:

  postgres@bdteste=# SELECT regexp_replace(initcap('fulano de tal souza e 
silva'), '([[:upper:]])(a|as|os|e)[[:blank:]]', E'd\\2 ', 'g');       
regexp_replace        
  -----------------------------
  Fulano de Tal Souza E Silva
  (1 row)


  Mas isso fica para tema de casa...

  -- 
  Fabrízio de Royes Mello
  >> Blog sobre TI: http://fabriziomello.blogspot.com 
  >> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello


  _______________________________________________
  pgbr-geral mailing list
  [email protected]
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a