tipo Float en SQL
2 seguidores
Aupa
Por problemas que ya ni me acuerdo exactamente porque lo hice, tengo un campo tipo char de esta forma: "0,2", "23,4", "45,5".....
Es decir, numeros reales pero como texto...
Bien, necesito sumar estos datos y claro logicamente no me los suma porque son textos. Hice la siguiente consulta:
<em>SELECT proyectos.nombre, (SELECT SUM(int(horas)) FROM horas WHERE horas.id_proyecto=proyectos.id_proyecto) AS h FROM proyectos</em>
El campo horas, es el que contiene esos datos reales... Si uso la función "INT" me los suma, pero como enteros y pierdo los decimales... Existe alguna función para convertir a real? Probe con "FLOAT" pero no va......
Gracias.
deeleman
Podrias probar empleando CAST o CONVERT, en caso de que tu entorno de BBDD lo soporte(SQL Server, Sybase), que imagino que sí:
SELECT proyectos.nombre, (SELECT SUM(CAST(horas AS FLOAT)) FROM horas WHERE horas.id_proyecto=proyectos.id_proyecto) AS h FROM proyectos
De todos modos, en teoria la conversion de varchar a FLOAT (con 6 digitos, dos decimales) es implicita en T-SQL. Es decir, no requiere de CAST ni CONVERT. Quizas se trate del separador que empleas, que el COLLATION de tu base de datos no lo interprete como separador de decimales, aunque esto es poco probable. Bueno, prueba y dime que ocurre.
Nota: Para una referencia completa sobre conversión en T-SQL puedes acudir AQUI