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