Bom Dia Matheus E fixo sim, e obrigado pela ajuda
[]s Luiz Em 15 de outubro de 2012 08:41, Matheus de Oliveira < [email protected]> escreveu: > > > 2012/10/14 Luiz Rafael Culik <[email protected]> > >> >> >> Em 14 de outubro de 2012 20:35, Matheus de Oliveira < >> [email protected]> escreveu: >> >> >>> >>> 2012/10/14 Luiz Rafael Culik <[email protected]> >>> >>>> >>>> >>>> Em 14 de outubro de 2012 20:26, Matheus de Oliveira < >>>> [email protected]> escreveu: >>>> >>>> >>>>> >>>>> On Sun, Oct 14, 2012 at 7:48 PM, Luiz Rafael <[email protected]>wrote: >>>>> >>>>>> Boa Noite >>>>>> >>>>>> Gostaria de ajuda pra um pequeno problema >>>>>> >>>>>> tenho uma tabela com a seguinte estrutura >>>>>> >>>>>> CREATE TABLE xxced2 >>>>>> ( >>>>>> sr_recno bigserial NOT NULL, >>>>>> indkey_001 character varying(254), >>>>>> CONSTRAINT xxced2_sr_recno_key UNIQUE (sr_recno) >>>>>> ) >>>>>> WITH ( >>>>>> OIDS=FALSE >>>>>> ); >>>>>> >>>>>> CREATE INDEX xxced2_xxced11 >>>>>> ON xxced2 >>>>>> USING btree >>>>>> (indkey_001 COLLATE pg_catalog."default" NULLS FIRST); >>>>>> >>>>>> com os seguintes dados >>>>>> sr_recno; indkey_001 >>>>>> 154;"201223.3.90.05.54 154" >>>>>> 155;"201223.3.90.05.55 155" >>>>>> 156;"201223.3.90.05.56 156" >>>>>> 157;"201223.3.90.05.61 157" >>>>>> 158;"201223.3.90.05.99 158" >>>>>> 159;"201223.3.90.06.00 159" >>>>>> 160;"201223.3.90.07.00 160" >>>>>> 161;"201223.3.90.08.00 161" >>>>>> 162;"201223.3.90.08.01 162" >>>>>> 163;"201223.3.90.08.02 163" >>>>>> 164;"201223.3.90.08.03 164" >>>>>> 165;"201223.3.90.08.99 165" >>>>>> 166;"201223.3.90.09.00 166" >>>>>> 167;"201223.3.90.09.02 167" >>>>>> 168;"201223.3.90.09.04 168" >>>>>> 169;"201223.3.90.09.05 169" >>>>>> 170;"201223.3.90.09.06 170" >>>>>> 171;"201223.3.90.10.00 171" >>>>>> 172;"201223.3.90.14.00 172" >>>>>> 173;"201223.3.90.14.14 173" >>>>>> 174;"201223.3.90.14.16 174" >>>>>> 175;"201223.3.90.15.00 175" >>>>>> 176;"201223.3.90.16.00 176" >>>>>> 177;"201223.3.90.18.00 177" >>>>>> 178;"201223.3.90.19.00 178" >>>>>> 179;"201223.3.90.20.00 179" >>>>>> 180;"201223.3.90.26.00 180" >>>>>> 181;"201223.3.90.27.00 181" >>>>>> 182;"201223.3.90.28.00 182" >>>>>> 183;"201223.3.90.30.00 183" >>>>>> 184;"201223.3.90.30.01 184" >>>>>> 185;"201223.3.90.30.02 185" >>>>>> 186;"201223.3.90.30.03 186" >>>>>> 187;"201223.3.90.30.04 187" >>>>>> 188;"201223.3.90.30.05 188" >>>>>> 189;"201223.3.90.30.06 189" >>>>>> 190;"201223.3.90.30.07 190" >>>>>> 191;"201223.3.90.30.08 191" >>>>>> 192;"201223.3.90.30.09 192" >>>>>> 193;"201223.3.90.30.10 193" >>>>>> 194;"201223.3.90.30.11 194" >>>>>> 195;"201223.3.90.30.12 195" >>>>>> 196;"201223.3.90.30.13 196" >>>>>> 197;"201223.3.90.30.14 197" >>>>>> 198;"201223.3.90.30.15 198" >>>>>> 199;"201223.3.90.30.16 199" >>>>>> 200;"201223.3.90.30.17 200" >>>>>> 201;"201223.3.90.30.18 201" >>>>>> 202;"201223.3.90.30.19 202" >>>>>> 203;"201223.3.90.30.20 203" >>>>>> 204;"201223.3.90.30.21 204" >>>>>> >>>>>> Agora vem o problema >>>>>> >>>>>> se eu usar a query >>>>>> >>>>>> SELECT A."sr_recno", A."indkey_001" FROM "xxced1" A WHERE ( >>>>>> A."indkey_001" <= E'201223.3.90.30.00' ) ORDER BY >>>>>> A."indkey_001" desc >>>>>> >>>>>> o registro com a informacao 201223.3.90.30.00 no campo indkey não e >>>>>> retornado >>>>>> alguma sugestao? >>>>>> >>>>> >>>>> Pelos dados que você passou, não tem essa informação mesmo, apenas >>>>> o "201223.3.90.30.00 183", que contém "<epaços>183" concatenado à >>>>> "201223.3.90.30.00", >>>>> e, portanto é maior que "201223.3.90.30.00". Verifique melhor os dados, >>>>> talvez concatenando algum caracter antes e depois para verificar se não há >>>>> espaços ou caracteres não imprimívies. >>>>> >>>>> >>>> Matheus >>>> >>>> Se eu usar um select substr resolveria o meu problema? >>>> >>>> >>> Depende, qual exatamente é o seu problema? >>> >>> >>> >>> Matheus >>> >> >> Eu preciso trazer tudo que for <= ao dado independente da concatenação ou >> seja se pedisse <= 201223.3.90.30.00 >> teria que trazer por exemplo >> >> 183;"201223.3.90.30.00" >> 182;"201223.3.90.28.00" >> >> > > Bom, se for fixa a quantidadde de caracteres: > > SELECT substr('201223.3.90.30.21 204', 1, 17); > > Agora, se for um padrão sempre números e pontos no começo, mas não > exatamente 17 caracteres, você pode usar uma expressão regular, ex: > > SELECT regexp_replace('201223.3.90.30.21 204', '^([0-9.]*).*$', > E'\\1'); > > Se não for nenhum caso, explique melhor a formação desse campo. > > > Atenciosamente, > -- > Matheus de Oliveira > Analista de Banco de Dados PostgreSQL > Dextra Sistemas - MPS.Br nível F! > www.dextra.com.br/postgres > > > > _______________________________________________ > 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
