美文网首页
为什么结果看起来是一样的,但是用except就是不一样,SQL

为什么结果看起来是一样的,但是用except就是不一样,SQL

作者: HappyJoo | 来源:发表于2020-03-24 22:33 被阅读0次

    今天这个问题真的是搞了我很久,所以记录一下,如果能帮到谁就很好了哈~

    首先说一下原因:浮点数 float 为表示很大的数,丢失了部分精度。也就是说,同样是20位小数,decimal 的全是零,但是 float 由于精度不准,后面会开始浮动数字。

    两个table,A 和 B,同一条数据,看起来都是:

    select click from A
    union all
    select click from B
    

    得到结果:

    1 1230.4444
    2 1230.4444
    

    看起来一模一样的,但实际上,他们的精度不一样。

    table A 的 click 是 numeric 的,
    table B 的 click 是 float

    问题就在这里,float 的精度是不那么精确的,所以表面上他们看起来是一样的,但如果你用这样看:

    select cast(click as decimal(20,15)) from A
    union all
    select cast(click as decimal(20,15))from B
    

    实际上他们是:

    1 1230.44440000000000
    2 1230.44440000000732
    

    当然其他的不一定是 732 啦,反正就是会不一样,所以实际上他们是不一样的。

    所以解决办法,要么都变成四位小数,这样后面的732就会被去掉,要么,好像也确实没有什么好办法,有的话麻烦留言哈哈哈哈~~

    完!

    相关文章

      网友评论

          本文标题:为什么结果看起来是一样的,但是用except就是不一样,SQL

          本文链接:https://www.haomeiwen.com/subject/msqzyhtx.html