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

Responder a