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

Como convierto character a Int?

Estas en el tema de Como convierto character a Int? en el foro de PostgreSQL en Foros del Web. Hola amigos tengo un problema, tengo una columna la cual contienen datos numericos, se que seria facil tener el campo en int8 pero en un ...
  #1 (permalink)  
Antiguo 07/07/2010, 10:13
 
Fecha de Ingreso: noviembre-2006
Ubicación: Peru
Mensajes: 26
Antigüedad: 17 años, 5 meses
Puntos: 0
Pregunta Como convierto character a Int?

Hola amigos tengo un problema, tengo una columna la cual contienen datos numericos, se que seria facil tener el campo en int8 pero en un futuro existiran datos con letras. Lo que necesito es ordenar en forma correcta ya sea ascendente o descendente los datos, el campo es un character(8) pero los datos usualmente tienen 5 o 6 caracteres y espacio en blanco por delante y al ordenar ahora me muestra :

"10000 "
"10001 "
"10002 "
"10003 "
"10123 "
"10124 "
"9721 "
"9722 "
"9723 "
"9995 "
"9996 "
"9997 "
"9998 "
"9999 "

lo cual es incorrecto, asumo por que es el campo de tipo caracter.

Si fuera el campo numerico tendria una correcta ordenacion , espero me puedan ayudar con la forma de ordenacion.
Saludos gracias

He visto la funcion int8() o algo que me puedan sugerir?
  #2 (permalink)  
Antiguo 07/07/2010, 10:21
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: Como convierto character a Int?

Intenta ordenar acorde a la longitud del campo combinado con el valor del campo, no puedes converitir a entero porque cuando guardes letras el cast en el select te arrojara error
  #3 (permalink)  
Antiguo 07/07/2010, 10:22
 
Fecha de Ingreso: noviembre-2006
Ubicación: Peru
Mensajes: 26
Antigüedad: 17 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Como convierto character a Int?

Cita:
Iniciado por webness Ver Mensaje
Intenta ordenar acorde a la longitud del campo combinado con el valor del campo, no puedes converitir a entero porque cuando guardes letras el cast en el select te arrojara error
Buena idea, pero no soy muy conocedor aun de funciones en postgres, si me ayudaras con el condicional seria mostro.
  #4 (permalink)  
Antiguo 07/07/2010, 10:23
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: Como convierto character a Int?

MIENTRAS VE buscando la funcion LENGTH de postgres, y yo voy mirando en mis tablas para hacer un query de ejemplo,

es mas mandame la sentencia create de tu tabla y unos 20 registros por ahi con sus respectivas sentencias insert
  #5 (permalink)  
Antiguo 07/07/2010, 10:28
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: Como convierto character a Int?

se me olvido decirte que antes de todo eso hagas el order by de forma descendente
  #6 (permalink)  
Antiguo 07/07/2010, 12:09
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Como convierto character a Int?

Una excelente y rapida forma de castear un valor es con ::

Código SQL:
Ver original
  1. postgres=> SELECT '1000023'::INTEGER;
  2.   int4
  3. ---------
  4.  1000023
  5. (1 fila)

Fijate que la salida es un entero.

En el order by puedes utilizarlo.

Código SQL:
Ver original
  1. ORDER BY campo_char::INTEGER;

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 07/07/2010, 12:14
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: Como convierto character a Int?

tienes toda la razon huesos52, pero y el dia que el dato contenga letras?
  #8 (permalink)  
Antiguo 07/07/2010, 12:18
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Como convierto character a Int?

Mira este ejemplo.

Código SQL:
Ver original
  1. pruebas=> SELECT *FROM nutrientes ORDER BY codigo;
  2.  codigo
  3. --------
  4.  e1
  5.  e10
  6.  e2
  7.  e3
  8. (4 filas)
  9.  
  10. pruebas=> SELECT *FROM nutrientes ORDER BY SUBSTR(codigo,2)::INTEGER;
  11.  codigo
  12. --------
  13.  e1
  14.  e2
  15.  e3
  16.  e10
  17. (4 filas)

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 10/07/2010, 04:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Como convierto character a Int?

thebabyxtremeboy,

para poder usar funciones específicas que cubran todas las posibilidades en la ordenación debes decirnos cuáles son esas posibilidades:
hablas de números, de espacio en blanco por delante y de caracteres alfabéticos. Pues bien, acláranos la posición de los caracteres alfabéticos, cuántos como máximo puede haber, si irán siempre juntos o intercalados, si el espacio en blanco quedará entre los caracteres alfabéticos y los numéricos, cuantos numéricos o dónde, etc.
Si no aclaras esto, resultará complicado dar una solución que te sirva para todos los casos.

Saludos, amigos.
  #10 (permalink)  
Antiguo 10/07/2010, 07:54
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Como convierto character a Int?

Bienvenido al foro de PostgreSQL Jurena. Primera vez que te veo por estos lados.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 11/07/2010, 09:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Como convierto character a Int?

Gracias, Huesos52,
no es que me haya pasado de un lado a otro, pero ya se sabe que en esto de las bases de datos lo importante es ser capaz de manejar cualquiera de ellas con ayuda del manual y de los amigos del foro.
No podré ayudar mucho en las cuestiones de sintaxis específica y funciones de PostgreSQL, pero tal vez alguna vez en el modo de enfocar el problema de una manera general, como pudiera ser el caso.
Saludos, amigo, y también a todos los foristas de postgreSQL.
  #12 (permalink)  
Antiguo 20/08/2012, 23:23
 
Fecha de Ingreso: junio-2012
Ubicación: caracas
Mensajes: 33
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Como convierto character a Int?

Cita:
Iniciado por huesos52 Ver Mensaje
Una excelente y rapida forma de castear un valor es con ::

Código SQL:
Ver original
  1. postgres=> SELECT '1000023'::INTEGER;
  2.   int4
  3. ---------
  4.  1000023
  5. (1 fila)

Fijate que la salida es un entero.

En el order by puedes utilizarlo.

Código SQL:
Ver original
  1. ORDER BY campo_char::INTEGER;

saludos
Amigo muchas gracias me evitaste dolores de cabeza jeje saludos!

Etiquetas: int
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 16:17.