1

目前我在使用 SQL Server 时遇到问题。

我只是做这样的查询:

declare @var2 int
set @var2 = ((7500.50 * 100) % 100)

select @var2

如果我在本地机器上执行(查询窗口连接到本地),它返回 50。

但是,如果我在连接到我的办公室服务器的查询窗口中运行该查询,则会导致:

消息 8117,级别 16,状态 1,行 2
操作数数据类型数字对于模运算符无效。
消息 206,级别 16,状态 2,第 2 行
操作数类型冲突:int 与 void 类型不兼容

我在 SQL Server 2005 和 2008 中都试过了。

有人遇到过同样的问题或知道解决方案吗?

非常感谢。

4

1 回答 1

3

检查服务器的兼容性级别。它可能为 80,这是为了与 SQL Server 2000 兼容。在 SQL Server 2000 中,模仅支持 INT 数据类型。在SQL 2005 及更高版本中,允许使用其他数字数据类型,并且会发生隐式转换,因为在您的公式中,您同时具有数字和整数数据类型。

我找到了一个脚本来修改服务器的所有数据库的兼容性级别,并过滤您不想更改的数据库。

于 2012-07-27T05:05:06.977 回答