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

partir float en "."

Estas en el tema de partir float en "." en el foro de Mysql en Foros del Web. Quiero partir un float por "." O sea, si el número es 2.5, quiero obtener en la misma query 2 y 5 Tengo problemas cuando ...
  #1 (permalink)  
Antiguo 28/08/2008, 16:09
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 20 años, 1 mes
Puntos: 0
partir float en "."

Quiero partir un float por "."
O sea, si el número es 2.5, quiero obtener en la misma query 2 y 5
Tengo problemas cuando trato de castear el numero a string:

SELECT 2.5, cast(2.5 as char); -> este caso funciona bien: 2.5 , 2.5

pero:

SELECT 5/2, cast(5/2 as char); ->en este caso obtengo 2.5 , 2.5000, poque 25000???

Quiero castearlo a string poque necesito obtener 2 y 5, exite otra manera de obtener esto último?
__________________
ratamaster
  #2 (permalink)  
Antiguo 28/08/2008, 17:00
Avatar de soy_rebeca  
Fecha de Ingreso: agosto-2008
Mensajes: 42
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: partir float en "."

Ratamaster:

Por que no usas una variable primero para hacer la division y luego recien convertirlo a string?
  #3 (permalink)  
Antiguo 28/08/2008, 22:59
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: partir float en "."

Eso ya lo hice, el resultado es el mismo:

Código:
SELECT @calc:=5/2, cast(@calc as char);
Saben como lograrlo?
__________________
ratamaster

Última edición por ratamaster; 28/08/2008 a las 23:06
  #4 (permalink)  
Antiguo 29/08/2008, 02:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: partir float en "."

Ratamaster, para sacarlo con el ejemplo que propones:
SELECT SUBSTRING_INDEX( 2.5, '.', 1 ) parteentera, SUBSTRING_INDEX( 2.5, '.', -1 ) partedecimal

Si lo quieres sacar de un campo float llamado numero de una tabla llamada tabla:

Cita:
SELECT SUBSTRING_INDEX( numero, '.', 1 ) parteentera, SUBSTRING_INDEX( numero, '.', -1 ) partedecimal
FROM tabla
Hay más formas, pero esta es una de ellas. Prueba si la versión de MySQL que usas te la acepta.

Última edición por jurena; 29/08/2008 a las 07:41
  #5 (permalink)  
Antiguo 29/08/2008, 09:05
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: partir float en "."

Gracias por tu respuesta
La siguiente query me está devolviendo 2 y 5000.
Esto pasa porque estoy dividiendo directamente, como se puede ver en este ejemplo:

Código:
SELECT SUBSTRING_INDEX( 5/2, '.', 1 ) parteentera, SUBSTRING_INDEX( 5/2, '.', -1 ) partedecimal
¿Cómo podría obtener 5 en vez de 5000 ?
__________________
ratamaster
  #6 (permalink)  
Antiguo 29/08/2008, 09:14
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: partir float en "."

wow
Tuve que hacer esto:

SUBSTRING(SUBSTRING_INDEX( 5/2, '.', -1 ),1,1)


para tomar el 5 solo.
Igual no entiendo porque cuando divido ( 5/2 ) y no uso 2.5 directamente, la query me devolvía 5000, alguna idea?
__________________
ratamaster
  #7 (permalink)  
Antiguo 29/08/2008, 12:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: partir float en "."

Usa trim(trailing '0' from...)
SELECT SUBSTRING_INDEX( 105 /100, '.', 1 ) parteentera, TRIM(
TRAILING '0'
FROM SUBSTRING_INDEX( 105 /100, '.', -1 ) ) partedecimal
FROM tabla

De todas formas, piensa que por defecto carga varios decimales. No sé exactamente lo que buscas y por eso no puedo darte más ayuda, aunque esta te valdrá. Dejará hasta 4 decimales, pero si salen más los perderás y ya no será exacto. Dinos por qué quieres usar esto y hacerlo con la base de datos.
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 22:10.