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