Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-12-2007
egarc egarc is offline
Miembro
 
Registrado: jul 2006
Posts: 60
Poder: 18
egarc Va por buen camino
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

Última edición por egarc fecha: 12-12-2007 a las 18:01:49.
Responder Con Cita
  #2  
Antiguo 12-12-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
Interesante la SQL... (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.
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #3  
Antiguo 12-12-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
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

Última edición por BlueSteel fecha: 12-12-2007 a las 18:48:19. Razón: texto
Responder Con Cita
  #4  
Antiguo 12-12-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
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...[/color][/size]
__________________
BlueSteel
Responder Con Cita
  #5  
Antiguo 12-12-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
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...
__________________
BlueSteel

Última edición por BlueSteel fecha: 13-12-2007 a las 15:19:59.
Responder Con Cita
  #6  
Antiguo 13-12-2007
egarc egarc is offline
Miembro
 
Registrado: jul 2006
Posts: 60
Poder: 18
egarc Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 13-12-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
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
__________________
BlueSteel
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
convertir edit de string a float Kamael OOP 1 11-08-2007 03:33:23
convertir texto en grafico donepia Varios 1 20-10-2006 11:37:59
Cast: Convertir Float a cadena "99+999" Jose_Pérez SQL 1 15-11-2005 14:51:38
convertir un texto a mayusculas uper Varios 7 07-03-2005 16:45:23
Como Convertir un dato Integer ó Float a String en FireBird???? AGAG4 Firebird e Interbase 8 04-12-2004 02:59:47


La franja horaria es GMT +2. Ahora son las 04:23:20.


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