Fórum Ordenar strings #391150

24/11/2010

0

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

Responder

Posts

24/11/2010

Leonardo Dias

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.
Responder

Gostei + 0

24/11/2010

Wilson Junior

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


Espero ter colaborado.
Responder

Gostei + 0

24/11/2010

Jair N.

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."



Responder

Gostei + 0

25/11/2010

Leonardo Dias

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.
Responder

Gostei + 0

25/11/2010

Wilson Junior

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.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar