关于使用函数的问题

fstao 2006-10-05 07:11:26
如果a=-1000,b=12,用a/12,得出:-83,余-4,
sql的写法:
select floor(-1000/12),
-1000-floor(-1000/12)*12

没有问题,但是如果把sql的写法改为:
select floor(-1000.00/12),
-1000.00-floor(-1000.00/12)*12

变成:-84,余8,
这就不对了,请问怎么写语句来杜绝这个问题?
...全文
190 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
splory 2006-10-06
  • 打赏
  • 举报
回复
select floor(cast(-1000.00 as int)/12),floor(cast(-1000.00 as int)%12)
这样就OK
splory 2006-10-06
  • 打赏
  • 举报
回复
select floor(-1000/12),floor(-1000%12)
xyxfly 2006-10-05
  • 打赏
  • 举报
回复
所以要得到你要的结果,需要先转为整数再计算~
xyxfly 2006-10-05
  • 打赏
  • 举报
回复
select (-1000.00/12) ---》-83.333333

select floor(-83.333333 ) --》-84

因为 FLOOR
返回小于或等于所给数字表达式的最大整数。

Well 2006-10-05
  • 打赏
  • 举报
回复
可以将其转换为int型再来进行运算
zjcxc 元老 2006-10-05
  • 打赏
  • 举报
回复
select floor(cast(-1000.00 as int)/12),
-cast(-1000.00 as int)-floor(cast(-1000.00 as int)/12)*12

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧