Ordenar strings

PostgreSQL

24/11/2010

Tenho uma tabela no banco de dados do tipo string, o nome da coluna é: "memnum", e quando eu peço para ordenar em crescente ou decrescente ele troca alguns dados tanto na aplicação que faz uso dos dados quanto no próprio banco, confira a imagem:


Se alguém souber uma forma de arrumar estes dados, avise.
Leonardo Dias

Leonardo Dias

Curtidas 0

Respostas

Leonardo Dias

Leonardo Dias

24/11/2010

Tenho uma tabela no banco de dados do tipo string, o nome da coluna é: "memnum", e quando eu peço para ordenar em crescente ou decrescente ele troca alguns dados tanto na aplicação que faz uso dos dados quanto no próprio banco, confira estes dados estão ordenados em ordem crescente.

"1.2.1"
"1.2.10"
"1.2.11"
"1.2.12"
"1.2.13"
"1.2.14"
"1.2.15"
"1.2.16"
"1.2.17"
"1.2.18"
"1.2.2"
"1.2.3"
"1.2.4"
"1.2.5"
"1.2.6"
"1.2.7"
"1.2.8"
"1.2.9"

Se alguém souber uma forma de arrumar estes dados, avise.
GOSTEI 0
Wilson Junior

Wilson Junior

24/11/2010

Teste assim
SELECT
  CAST( REPLACE(memnum, '.', '') AS INTEGER),
  *
FROM
  NOME_TABELA
ORDER BY
  1


Espero ter colaborado.
GOSTEI 0
Jair N.

Jair N.

24/11/2010

Boa tarde, eu faria o seguinte como você tem uma classificação tipo contábil e onde se vê "1.2" poderá também ter outra tipo "1.3", "1.2.9.n" eu faria o seguinte converteria para um array do tipo inteiro a exemplo:

    SELECT CAST(STRING_TO_ARRAY(tabela.memnum,'.') AS INT[]) AS ary_memnum
              ,  tabela.*
       FROM tabela
ORDER BY ary_memnum

"Ninguem trabalha porquê gosta, trabalho é o meio que utilizamos para realizar algo, originado de ideias ou desafios."



GOSTEI 0
Leonardo Dias

Leonardo Dias

24/11/2010

Teste assim
SELECT
  CAST( REPLACE(memnum, '.', '') AS INTEGER),
  *
FROM
  NOME_TABELA
ORDER BY
  1


Espero ter colaborado.


------------------------------------------------
aparece o seguinte erro quando executo este comando que vc citou:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTEGER), * FROM memoria ORDER BY 1 LIMIT 0, 30' at line 2,

essa conversão eu nunca fiz, se tiver alguma outra ideia ainda estou arrumando o meu código.
GOSTEI 0
Wilson Junior

Wilson Junior

24/11/2010

Veja estes links
Replace http://www.postgresql.org/docs/8.1/static/functions-string.html
Cast http://pt.wikibooks.org/wiki/PostgreSQL_Pr%C3%A1tico/Fun%C3%A7%C3%B5es_Internas/Convers%C3%A3o_de_Tipos

Espero ter colaborado.
GOSTEI 0
POSTAR