2012无压力declare @i Decimal(10,2), @j Decimal(10,2)
set @i = 12.32223
set @j=5.110
select (@i+@j)%@j/*---------------------------------------
2.10*/

解决方案 »

  1.   

    我的2008r2也没问题,没报错:
    declare @i Decimal(10,2), @j Decimal(10,2)
    set @i = 12.32223
    set @j=5.110
    select (@i+@j)%@j
     
    /*
    2.10
    */
      

  2.   

    R2也没问题,你先看看sp是否一致
      

  3.   


    我也没报错....所以搞不明白了!
    有帖子说要改成cast 成 int,就好了。
    不过需求是要计算钱的,需要有分和毛~~·
      

  4.   

    换decimal试试,把精度搞大一点,貌似是溢出了
      

  5.   


    我也没报错....所以搞不明白了!
    有帖子说要改成cast 成 int,就好了。
    不过需求是要计算钱的,需要有分和毛~~·改成money类型试试:
    declare @i money, @j money
    set @i = 12.32223
    set @j=5.110
    select (@i+@j)%@j
     
    /*
    2.1022
    */
      

  6.   


    decimal 也报 numeric的错误.....
      

  7.   

    要计算钱的话money是可以的,不过貌似听说这个类型有点问题
      

  8.   


    money 包的错更多,之前就是从money改过来的....
      

  9.   


    我也没报错....所以搞不明白了!
    有帖子说要改成cast 成 int,就好了。
    不过需求是要计算钱的,需要有分和毛~~·改成money类型试试:
    declare @i money, @j money
    set @i = 12.32223
    set @j=5.110
    select (@i+@j)%@j
     
    /*
    2.1022
    */依然报错~~
      

  10.   

    declare @i Decimal(10,2), @j Decimal(10,2)
    set @i = 12.32223
    set @j=5.110
    select ((CAST( @i AS Decimal(10,2)))+(CAST( @j AS Decimal(10,2))))%(CAST( @j AS Decimal(10,2)))试试
      

  11.   


    报错啦??恭喜你~~~这样呢:
    declare @i decimal(30,6), @j decimal(30,6)
    set @i = 12.32223
    set @j=5.110
    select (@i+@j)%@j
     
    /*
    2.102230
    */
      

  12.   


    报错啦??恭喜你~~~这样呢:
    declare @i decimal(30,6), @j decimal(30,6)
    set @i = 12.32223
    set @j=5.110
    select (@i+@j)%@j
     
    /*
    2.102230
    */好像不是精度的事儿,是只能%int的
      

  13.   

    检查一下兼容级别,2000只能对int做取余,我怀疑那些报错的库是否还是2000的兼容级别
      

  14.   

    ALTER DATABASE 库名 SET COMPATIBILITY_LEVEL=90
      

  15.   


    看来只能用必杀了!!!declare @i numeric(12,4), @j Decimal(12,4)
    set @i = 12.10
    set @j=5.00
    select cast((cast(@i*100 as int)+cast(@j*100 as int))%cast(@j*100 as int) as numeric(12,0)) /100
      

  16.   


    报错啦??恭喜你~~~
    2000報錯,08R2沒壓力要是整出答案了,200分你付了吧~~~哈哈解决你的大难题啦~~!
     打醬油的,多少給點?declare @i numeric(12,4), @j Decimal(12,4)
    set @i = 12.10
    set @j=5.00
    select cast((cast(@i*100 as int)+cast(@j*100 as int))%cast(@j*100 as int) as numeric(12,0)) /100这个好使~你试试!
      

  17.   


    ALTER DATABASE 库名 SET COMPATIBILITY_LEVEL=90
    ‘=’附近有错误?
      

  18.   


    报错啦??恭喜你~~~
    2000報錯,08R2沒壓力要是整出答案了,200分你付了吧~~~哈哈解决你的大难题啦~~!
     打醬油的,多少給點?declare @i numeric(12,4), @j Decimal(12,4)
    set @i = 12.10
    set @j=5.00
    select cast((cast(@i*100 as int)+cast(@j*100 as int))%cast(@j*100 as int) as numeric(12,0)) /100这个好使~你试试!哦,但是具体的@i的值不确定,那到底得乘以100 还是1000呢,不够灵活
      

  19.   


    报错啦??恭喜你~~~
    2000報錯,08R2沒壓力要是整出答案了,200分你付了吧~~~哈哈解决你的大难题啦~~!
     打醬油的,多少給點?declare @i numeric(12,4), @j Decimal(12,4)
    set @i = 12.10
    set @j=5.00
    select cast((cast(@i*100 as int)+cast(@j*100 as int))%cast(@j*100 as int) as numeric(12,0)) /100这个好使~你试试!
      

  20.   

    2000肯定没有拉,我说那个报错的05,2000只能用int
      

  21.   

    难怪我的alter报错,这个要在05上面执行的
      

  22.   


    2000上执行的....对了,但是为什么你的2005上没问题,而你朋友的2005就有问题呢? 这个很奇怪
    我也有这个疑问~~~!应该是兼容性的事儿吧!哦,你的意思是你朋友的sql server 2005设置的兼容级别是8 是吧
      

  23.   

    结贴、下班、走人!
    新年快乐!!
    2000上执行的....对了,但是为什么你的2005上没问题,而你朋友的2005就有问题呢? 这个很奇怪
    报错啦??恭喜你~~~
    2000報錯,08R2沒壓力要是整出答案了,200分你付了吧~~~哈哈解决你的大难题啦~~!
     打醬油的,多少給點?declare @i numeric(12,4), @j Decimal(12,4)
    set @i = 12.10
    set @j=5.00
    select cast((cast(@i*100 as int)+cast(@j*100 as int))%cast(@j*100 as int) as numeric(12,0)) /100这个好使~你试试!