MySQL - Redondeo en update

 
Vista:
Imágen de perfil de jose
Val: 16
Ha aumentado su posición en 72 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Redondeo en update

Publicado por jose (20 intervenciones) el 08/06/2023 09:16:14
Hola a todos,

Estoy haciendo un procedimiento en mysql, en donde a través de condicionales busco la suma de unos registros de una tabla para añadirla a otra. Mi problema es que donde debería decir 193,45 me pone 194.00 con redondeo.

El campo donde se guarda la cantidad es de tipo decimal(10,2), en ambas tablas, y sólo hago un replace para eliminar el símbolo -.

¿Alguien podría decirme a que se debe o como solventarlo para que no redondee?

Muchas gracias,

1
2
3
4
5
6
7
8
IF NOT EXISTS (SELECT 1 FROM renta WHERE descripcion like '%Seguro Hogar %' AND vivienda = vivienda_id AND ano = anovar) THEN
        INSERT INTO renta (tipo,descripcion,vivienda,ano) values ('Seguros',concat('Seguro Hogar ',vivienda_alias),vivienda_id,anovar);
        SET sumavar = (SELECT SUM(cantidad) FROM movimientos WHERE titulo = 'Domiciliación' AND entidad like '%Seguro Hogar%' AND vivienda = vivienda_id AND year(fecha) = anovar);
        UPDATE renta SET cantidad = REPLACE(sumavar,'-','') WHERE tipo = 'Seguros' AND descripcion = concat('Seguro Hogar ',vivienda_alias) AND vivienda = vivienda_id AND ano = anovar;
    ELSE
        SET sumavar = (SELECT SUM(cantidad) FROM movimientos WHERE titulo = 'Domiciliación' AND entidad like '%Seguro Hogar%' AND vivienda = vivienda_id AND year(fecha) = anovar);
        UPDATE renta SET cantidad = REPLACE(sumavar,'-','') WHERE tipo = 'Seguros' AND descripcion = concat('Seguro Hogar ',vivienda_alias) AND vivienda = vivienda_id AND ano = anovar;
    END IF;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 8
Ha aumentado su posición en 9 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Redondeo en update

Publicado por Alejandro (21 intervenciones) el 04/07/2023 17:21:23
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
¿No tienes una linea DECLARE sumvar INT? debería ser FLOAT o DOUBLE

Prueba en consola el query que da el valor a sumvar.
El replace no tiene nada que ver pero en su lugar deberías usar ABS(sumvar)

El set y el update pueden ir fuera del if para que no dupliques código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar