[pgbr-geral] separar caracteres minúsculos dos maiúsculos

2013-10-12 Por tôpico Eloi Ribeiro

Ola,

Tenho uma coluna de texto com códigos geológicos tipo:
lKv
uMIsn
CASi
K
CAS

Gostaria de separar os caracteres minúsculos dos maiúsculos, obtendo o 
seguinte resultado:

min_prefixo,maiusculos,min_sufixo
l,K,v
u,MI,sn
,CAS,i
,K,
,CAS,

A dificuldade que encontro deve-se a que não existe uma longitude fixa 
para todos os casos.


Cumprimentos,

Eloi
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] separar caracteres minúsculos dos maiúsculos

2013-10-12 Por tôpico Guimarães Faria Corcete DUTRA , Leandro
2013/10/12 Eloi Ribeiro e...@openmailbox.org:

 Gostaria de separar os caracteres minúsculos dos maiúsculos

Expressões regulares?
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] separar caracteres minúsculos dos maiúsculos

2013-10-12 Por tôpico Osvaldo Kussama
Em 12/10/13, Guimarães Faria Corcete DUTRA, Leandrol...@dutras.org escreveu:
 2013/10/12 Eloi Ribeiro e...@openmailbox.org:

 Gostaria de separar os caracteres minúsculos dos maiúsculos

 Expressões regulares?


Na linha proposta pelo Dutra:

SELECT regexp_replace(foo, '(^[a-z]*)([A-Z]*)([a-z]*)',
E'\\1,\\2,\\3', 'g') FROM (VALUES ('lKv'), ('uMIsn'), ('CASi'), ('K'),
('CAS')) AS bar(foo);
 regexp_replace

 l,K,v
 u,MI,sn
 ,CAS,i
 ,K,
 ,CAS,
(5 rows)

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] separar caracteres minúsculos dos maiúsculos

2013-10-12 Por tôpico Eloi
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 10/12/2013 05:48 PM, Osvaldo Kussama wrote:
 Em 12/10/13, Guimarães Faria Corcete DUTRA, Leandrol...@dutras.org
 escreveu:
 2013/10/12 Eloi Ribeiro e...@openmailbox.org:
 
 Gostaria de separar os caracteres minúsculos dos maiúsculos
 
 Expressões regulares?
 
 
 Na linha proposta pelo Dutra:
 
 SELECT regexp_replace(foo, '(^[a-z]*)([A-Z]*)([a-z]*)', 
 E'\\1,\\2,\\3', 'g') FROM (VALUES ('lKv'), ('uMIsn'), ('CASi'),
 ('K'), ('CAS')) AS bar(foo); regexp_replace  l,K,v 
 u,MI,sn ,CAS,i ,K, ,CAS, (5 rows)
 
 Osvaldo

Até agora só tinha usado o LIKE / ILIKE com %. Fui ver o que era isso
de 'Expressões regulares' e quase termino com dores de cabeça. Muito duro.

Tinha até chegado aqui, depois de algum tempo de testes:
SELECT substring('lbcCASsvn', '^([a-z]{1,5})'); -- lbc
SELECT substring('lbcCASsvn', 'Y*([A-Z]{1,5})'); -- CAS
SELECT substring('lbcCASsvn', 'A*([a-z]{1,5})$'); -- svn

Mas a solução do Osvaldo é muito mais elegante.

Dutra muito obrigado pela acertada dica. E Osvaldo pela precisa solução.

Cumprimentos,

Eloi


-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJSWYqeAAoJEP9qulIE6g+y1bMH/jv6NxggjUMcB2DUbSWt3l1Q
FbIEErwV0ofmlsHqcpx4ukGO62hyWZ+8xVaeceAnXXfnms5orCqnNWT2oahRaN+n
7Zcqt0sZzgzpU+ghkBRLm8LP4EhNEp+agE1/l1H7NukdhRGFO/peao0rkhXJ9CIK
b4FZmChGI/+V0aa1Al5pKN/q0eb2xHa5i4PTXvugO6gxws0iUEdWFn1Ex4hjFeEt
gMxd8eEMg0EAu2smWCFBU08FdUPkTqHVldoaQydAJHAsgJSSyRptPvEaIRwkpvwV
Ox0lrirfQnd71r/KgcOK0rUAjo6gCsDmvdUXpmTXl29FtdUszNOi5yz4SUFi4QE=
=o7c9
-END PGP SIGNATURE-
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral