Em 17 de junho de 2011 11:59, Jairo <[email protected]> escreveu:
> Pessoal alguém poderia ajudar com a seguinte situação: Estou fazendo um
> teste com uma tabela teste
>
> Tb_produ campos  código  character varying(6) NOT NULL, descricao character
> varying(30)
>
>
>
> Tenho seguinte registros:
>
> Código ;Descricao
>
> "3"      ;"produto 1"
>
> "3000" ;"produto 2"
>
> "301"  ;"produto 3"
>
> "a"     ;"produto 4"
>
> "a3"    ;"produto 5"
>
> "a31"  ;"produto 6"
>
> "abc"  ;"produto 7"
>
>
>
> Estou tentando fazer um select com order by com o campo Código porem
> considerando
>
> os  registros como numérico existe alguma forma???
>
>
>
> o resultado esperado do select teria que ser o seguinte:
>
> Código ;Descricao
>
> "3"      ;"produto 1"
>
> "301"  ;"produto 3"
>
> "3000" ;"produto 2"
>
> "a"     ;"produto 4"
>
> "a3"    ;"produto 5"
>
> "a31"  ;"produto 6"
>
> "abc"  ;"produto 7"
>


Eu não entendi sua ordem desejada.
Se fosse considerar o campo Código como numérico eu interpreto que,
considerando apenas os algarismos desse campo, "a31" deveria aparecer
antes de "301".
Tente explicar melhor a ordem desejada e também como considerar um
campo que não contenha algarismos, como por ex. "abc".

Os algarismos a serem considerados sempre aparecem no final da sring
ou poderia ser algo do tipo "ab12CD345"?

De qualquer maneira verifique se a função regexp_replace [1],
substituindo os não-algarismos por string vazia, pode ajudá-lo. Algo
do tipo:
regexp_replace(codigo, '[^[:digit:]]', '','g')

Osvaldo

[1] 
http://www.postgresql.org/docs/current/interactive/functions-matching.html#FUNCTIONS-POSIX-REGEXP
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a