select 1  from dept where '114.56'>11.0
/*
Arithmetic overflow error converting varchar to data type numeric.
*/
一定需要将114.56显示转换吗?

解决方案 »

  1.   

    11.0 不指定类型的话,默认为 numeric(3,1) 显然是存不下114.56的
      

  2.   


    cast('114.56' as float)可以吧?
      

  3.   

    嗯,可以的,因为float的优先级比numeric高
      

  4.   

    还可以这样 cast('114.56' as dec(5,2))或者改后面那个 cast(11.0 as dec(5,2))
      

  5.   

    主要前面的数字位数不确定,所以我还是转换成float吧
      

  6.   


    还是转换成大树说的那样吧,一般都不怎么用float
      

  7.   


    114.56是用varchar保存的我用cast('114.56' as float)>11.0可以比较啊这样11.0默认为numeric的,114.5是float
    因为float的优先级比numeric高,所以转换为float再进行比较。
    我也想把114.56转换为numeric(5,2),主要是114.56列所存的数,小数点和数字位数都是不确定的,所以转为float的不知道有没有更好的建议?