Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   No Me Funciona el Operador / En SQL Server 2005 (https://www.clubdelphi.com/foros/showthread.php?t=63890)

DANY 07-03-2009 16:41:37

No Me Funciona el Operador / En SQL Server 2005
 
La duda es bien sencilla
La consulta:
Código SQL [-]
Update Stock set Cantidad = Cantidad + (3 / 6)
where CodigoDeDeposito = 1 and CodigoArticulo = 5
no incrementa la cantidad, ahora si la consulta es:
Código SQL [-]
Update Stock set Cantidad = Cantidad + (6 / 6)
where CodigoDeDeposito = 1 and CodigoArticulo = 5
es decir , si el cociente devuelve un entero, si realiza la suma.
El campo "cantidad" en cuestion es float, tambien probe pasandolo a real.
utilizo la version Express Edition para Windows Vista.
Podria tener el SQL 2005 semejante bug??.

ContraVeneno 07-03-2009 17:20:27

Cuando haces "(3/6)" estás dividiendo dos enteros, por lo que SQL Server intepreta que estas buscando un resultado entero, por eso te regresa 0.

Si divides "(3/6.0)" ó "(3.0/6)" ó "(3.0/6.0)", estas dividiendo uno de sus valores con decimales y entonces SQL Server interpreta que estas buscando valor con decimales y te regresa 0.500000

No se si es un error o no, pero así es como funciona desde hace mucho, o al menos desde la versión 2000 así funciona.

Puedes probarlo con todos los número que quieras, si ambos valores son enteros, te va a regresar un entero, si alguno de sus valores tiene decimales, te regresa un valor con decimales.

DANY 07-03-2009 18:18:29

Es verdad, ya solucione mi codigo.
Muchas Gracias por la pronta respuesta, la verdad, no tenia ni idea de que trabaja asi, es raro que no respete la operacion matematica interpretando que se busca un entero.
una pregunta, y es solo curiosidad, eso esta establecido en el standart SQL?.
No recuerdo haber tenido ese problema en interbase, en ese caso, que curioso lo de los muchachos de M$. que no respetan el standart.
Saludos.

ContraVeneno 07-03-2009 18:38:18

Cita:

Empezado por ContraVeneno (Mensaje 340526)
...No se si es un error o no, pero así es como funciona desde hace mucho, o al menos desde la versión 2000 así funciona...

:D

10 repetidores caracteres


La franja horaria es GMT +2. Ahora son las 15:20:39.

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