Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Convertir de Texto a Float (https://www.clubdelphi.com/foros/showthread.php?t=51331)

egarc 12-12-2007 17:59:26

Convertir de Texto a Float
 
Buenas chicos, les escribo para ver si me pueden dar una mano con esto.

Tengo una tabla en sql server 2005 de un proveedor externo de software. Mi problema es el siguiente:

Todos los campos de la tabla son tipo VARCHAR, y lo que necesito es terminar un software para sacar unos reportes de las tablas de ese software pero tengo que hacer un SUM de un campo string. he intentado con la siguiente sentencia
Código SQL [-]

select TIPOFAC, NUMERO, ABONADO, CAST ((IMPTOTAL) AS FLOAT (12)) AS TOTAL FROM FC200712
pero me da el siguiente error:
Error converting data type varchar to real.

el campo puede ser asi ' 495.00 '
tipo varchar.


Cualquier informacion se las agradeceré.

Gracias anticipadas

Gabo 12-12-2007 18:06:23

Interesante la SQL... :p (EDITO: Aclaro que hasta hace poco no se veía bien.)

Creo que eso no es posible. Al menos en Interbase sólo se puede hacer Sum a valores numéricos, e imagino que en todos los SGDB será así.

Lo que podrías hacer es recuperar los datos con una query, recorrerla, hacer la conversión y sumar.

O también, redefinir los campos de la BD, si es que puedes, por otros mas apropiados.

BlueSteel 12-12-2007 18:43:05

Hola

prueba con esto.. no lo he provado.. lo hice asi de memoria

Código SQL [-]
Select Convert(Float, IMPTOTAL) As 'Importe Total'
From Tabla

Tambien puede ser asi
Código SQL [-]
SELECT CAST(IMPTOTAL AS money)
From Tabla

BlueSteel 12-12-2007 18:53:27

Hola...

mira.. probe esto en SQL Server 2005 y me funciono ok

Código SQL [-]
Select Convert(Float, Per_NCta)+1
From Personal
Where Per_Nro=1086

donde Per_NCta es de tipo Varchar de 15

Suerte...:p:D[/color][/size]

BlueSteel 12-12-2007 19:25:12

Hola...

hehe... segui realizando algunas pruebas... ahora con decimales y me arrojo esto

Código SQL [-]
Declare @var as Varchar(20)
Set @var='123456.652'
Print Convert(Float, @var)
Print Convert(Decimal(10,3), @var)
Print Cast(@var as Decimal(10,2))

y los resultados fueron los siguientes

123457
123456.652
123456.652

por lo cual,, convertir una variable de tipo Varchar a Float, no obtendrás los decimales, deberas convertirlos a Decimal...

suerte...:p:D

egarc 13-12-2007 13:29:45

esta prfecto lo que me han dicho, pero......

el campo a parte de ser varchar, tiene como separador de miles una coma (,) y existen campo (' 1,490.00 ') con espacios delante y detras.....

Me da el error cuando encuentra un registro con una coma..

muchas gracias por sus respuestas :confused:

BlueSteel 13-12-2007 15:18:42

Hola

lo que tendrias que hacer entonces es : o cambiar tu separador de miles a coma, o eliminar la coma del string

para eliminar la coma del string.. deberas utilizar la sgte funcion en D7

AnsiReplaceStr

Ejem.

Código Delphi [-]
 
Val := '125,432,134.00'
Val2 := AnsiReplaceStr(Val,',','');
Val2 := '125432134.00'

lo que hice fue reemplazar (eliminar) la coma "," por "" (nada)

espero que te sirva :p:D


La franja horaria es GMT +2. Ahora son las 01:34:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi