Ordenar strings
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.
Se alguém souber uma forma de arrumar estes dados, avise.
Leonardo Dias
Curtidas 0
Respostas
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.
"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
24/11/2010
Teste assim
Espero ter colaborado.
SELECT CAST( REPLACE(memnum, '.', '') AS INTEGER), * FROM NOME_TABELA ORDER BY 1
Espero ter colaborado.
GOSTEI 0
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."
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
24/11/2010
Teste assim
Espero ter colaborado.
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
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.
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