Hola Federico... On Sun, 3 May 2009 11:40:32 -0200, elcotorro wrote > hola, los molesto por el siguiente caso > tengo una tabla con un campo character var de 20 > en la cual tengo 2 registros con los siguientes valores > " 900730" y > " 999" > ambos tamaño de ambos es de 20 caracteres completados a la derecha > restando el len del numero
El problema está en el tipo de datos. ¿Para qué poner un campo de caracteres cuando vas a almacenar números?. Podrías tranquilamente declararlo como un bigint y el ordenamiento sería correcto: > si pido el max de exe campo...... me sale " 999" Exactamente. Hice la prueba: seba=# CREATE TEMP TABLE mitablita(micampito varchar(20)); CREATE TABLE seba=# INSERT INTO mitablita VALUES(' 900730'),(' 999'); INSERT 0 2 seba=# SELECT MAX(micampito) FROM mitablita ; max ---------------------- 999 (1 fila) > y si ordeno por ese campo lo ordena mal al igual que el max Bueno, eso no es así en mi caso: seba=# SELECT * FROM mitablita ORDER BY micampito; micampito ---------------------- 900730 999 (2 filas) Pero como te decía antes, vos estás esperando que trate a los números como números, pero en realidad los está tratando como cadenas de caracteres. Lo podrías hacer es castear indicando que son números: seba=# SELECT MAX(micampito::numeric) FROM mitablita ; max -------- 900730 (1 fila) Pero te ahorrarías éste trabajo indicando correctamente el tipo de datos. Aparte que no estoy seguro si funcionará en Postgres >= 8.3 (yo estoy probándolo en 8.2 y casualmente en 8.3 se introdujeron cambios con respecto a éste tipo de casteos). > muchas gracias por su atencion Saludos... - ------------------------------------------- Sebastián Villalba A. Gestión Informática Facultad de Cs. Médicas U.N.C. - Argentina ------------------------------------------- -- TIP 8: explain analyze es tu amigo