MYSQL:从varchar到float值的更新列不一样

时间:2018-02-07 06:31:10

标签: mysql

我想从另一个表中的varchar更新一个表中的float列,但是当我更新时,该值略有不同。

例如,数字为: 1284773 为varchar,但变为 1284770 为float。最后一位数字总是为0。

我的查询是:

UPDATE sales s
SET
S.item_comission =
(
    SELECT REF.comission
    FROM ref_comission REF
    WHERE REF.rv_id = S.item_id
          AND REF.parent_id = S.item_sub_id
)
WHERE S.item_type = 'P';
销售中的

item_comission 是S是浮点数

ref_comission 中的 comission 是varchar(20)

  
    
      
        

这是实际值:1284773<<<奇怪,即使我直接改变,价值仍然回到1284770

      
    
  

2 个答案:

答案 0 :(得分:0)

你有没有尝过这种方式

UPDATE S
    SET
       item_comission = CAST(REF.comission AS FLOAT)
    FROM Sales S
       INNER JOIN ref_comission REF
          ON REF.rv_id = S.item_id
             AND REF.parent_id = S.item_sub_id
       WHERE S.item_type = 'P'

答案 1 :(得分:0)

试试这个:

    UPDATE Sales
    SET
    item_comission = CAST(round(REF.comission,-1) AS FLOAT)
    FROM Sales S
    INNER JOIN ref_comission REF
    ON REF.rv_id = S.item_id
    AND REF.parent_id = S.item_sub_id
    WHERE S.item_type = 'P'