Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

ordenar datos tipo varchar????

Estas en el tema de ordenar datos tipo varchar???? en el foro de Bases de Datos General en Foros del Web. hola.... estoy trabajando con postgresql y cree una tabla con ciertos campos tipo varchar Ahora bien lo que necesito es realizar un ordenamiento de uno ...
  #1 (permalink)  
Antiguo 21/06/2003, 12:54
 
Fecha de Ingreso: agosto-2002
Mensajes: 15
Antigüedad: 21 años, 8 meses
Puntos: 0
ordenar datos tipo varchar????

hola....
estoy trabajando con postgresql y cree una tabla con ciertos campos tipo varchar

Ahora bien lo que necesito es realizar un ordenamiento de uno de esos campos, el problema es que los datos alli almacenados son numeros Ej: 16,18,110,111,19....etc. y cuando realizo el order by de ese campo el resultado es:
110,111,16,18,19...

Tengo alguna alternativa para realizar el ordenamiento como si fueran enteros asi:
16,18,19,110,111...

sin que tenga que cambiar el tipo de campo en mi tabla????
  #2 (permalink)  
Antiguo 21/06/2003, 21:37
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
Pues primero que nada para que tener campos tipo varchar si a fin de cuentas les vas a poner enteros. Eso es un error de diseño.

Y tendrías que buscar alguna función de PostgreSQL que te haga un casting y a partir de ese casting ordenar. =D
  #3 (permalink)  
Antiguo 23/06/2003, 10:59
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Toda BD tiene funciones para convertir a cualquier tipo siempre y cuando sepas lo que tenes almacenado. En tu caso, busca en la documentación y busca cual es esa función. Luego cuando hagas el select y el order by, le pones la funcion la cual puede ser VAL(y el campo).

No es un error de diseño el usar varchar para almacenar números... solo que te voy a dar un consejo, cuando vayas a usar tipos varchar para almacenar números, trata de almacenarlos rellenando con ceros a la izquierda para que no volvas a tener esos problemas cuando vayas a usarlo para ordenar.

Si te fijas en la documentación sobre la cantidad en bytes que usa un campo numérico a uno varchar, vas a darte cuenta que estas ahorrando espacio.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #4 (permalink)  
Antiguo 23/06/2003, 11:33
Avatar de Jorge_Mota  
Fecha de Ingreso: diciembre-2002
Ubicación: Chapinlandia :-D
Mensajes: 725
Antigüedad: 21 años, 4 meses
Puntos: 11
si fuera Sql Server yo lo haria asi:
select cast(tucampo as int) as numero from tu tabla order by numero
__________________
Jorge Mota
Blog
Gubiz estafa
  #5 (permalink)  
Antiguo 23/06/2003, 15:03
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
En la documentación de postgresql, encontre esto que te puede servir

to_number(text, text), regresa un numérico, convierte una hilera en número. Forma de usarlo to_number('12,454.8-', '99G999D9S')

Fijate aquí para que veas los formatos que se puedan usar. Además, por lo rápido que lo vi, podes bajar el manual en pdf para futuras revisiones.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:18.