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

Comparacion campos Float

Estas en el tema de Comparacion campos Float en el foro de SQL Server en Foros del Web. Hola me sucede un hecho curioso y es que comparo 2 campos float en un Select que son de distintas tablas y me dice que ...
  #1 (permalink)  
Antiguo 15/11/2007, 05:27
 
Fecha de Ingreso: diciembre-2004
Mensajes: 44
Antigüedad: 20 años, 1 mes
Puntos: 0
Comparacion campos Float

Hola me sucede un hecho curioso y es que comparo 2 campos float en un Select que son de distintas tablas y me dice que son distintos cuando realmente son iguales.

os paso el codigo

SELECT factura_cliente, factura_total, cobro_total_factura
FROM factura,cobro
WHERE (cobro_factura = factura_factura AND cobro_total_factura <> factura_total)


Es decir, quiero obtener aquellos clientes en los que no coincide lo facturado con lo cobrado (en lineas generales pendiente de cobro).

Pero sin embargo me devuelve esto:
facturado cobrado
1242,36 1242,36
3431,28 3431,28
216,92 216,92
216,92 216,92

¿Sabeis si para comparar deberia previamente convertir a algun tipo de dato especifico?

Gracias
  #2 (permalink)  
Antiguo 15/11/2007, 07:45
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años
Puntos: 38
Re: Comparacion campos Float

Y si los redondeas a los decimales que requieres? por ejemplo 2 decimales...

Lo que pasa es que los campos float tienen una mayor precision que un money o decimal, por eso aunque en la pantalla se desplieguen igual, puede ser que internamente sean diferentes...

Código:
SELECT factura_cliente, factura_total, cobro_total_factura
FROM factura 
Inner join 
          cobro
On    cobro_factura = factura_factura
WHERE round(cobro_total_factura,2) <> round(factura_total,2)
Aunque no es recomendable aplicar funciones a los campos, por cuestiones de rendimiento y todo eso... pero considerando que son valores numericos los calculos son mas rapidos...


Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 15/11/2007, 09:14
 
Fecha de Ingreso: diciembre-2004
Mensajes: 44
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: Comparacion campos Float

Muchas gracias Andres95, me ha funcionado perfectamente. No obstante lo habia resuelto de una manera un poco chapucera que era restar los campos y filtrar solo los que fueran mayor que 1.

Pero tu solución es mucho más elegante y es la que voy a usar.
  #4 (permalink)  
Antiguo 19/11/2007, 15:53
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 8 meses
Puntos: 25
Re: Comparacion campos Float

Ese tipo de campos debería ser de tipo Money. Entre otras cosas te evitarías problemas como el que te sucedió.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 00:34.