"MOD"不是一个被认可的内置函数名。

43

我想在 SQL Server 2008R2 中使用 MOD 函数,并按照这个链接进行操作,但仍然收到以下消息:

'MOD' 不是一个已知的内置函数名称。

DECLARE @m INT
SET @m = MOD(321,11)
SELECT @m

错误:

消息195,级别15,状态10,行2
“MOD”不是已识别的内置函数名称。

为什么我无法使用上面链接中的此函数?

5个回答

102
< p > MOD 关键字仅存在于 DAX 语言(分析型多维查询)中,而非 TSQL

请使用 % 代替。

参考: Modulo


3
救命的答案,谢谢。 - Saurin Vala
2
MODInformix 语法中也可以使用... 针对那些回到上世纪90年代的人们! - openwonk
2
有点让人沮丧的是,SQL Server 不符合 ANSI 标准。我希望能够编写一条在任何地方都能运行的 SQL 查询语句。Oracle 使用 MOD(),MySQL 使用 MOD() 和 %,而 Microsoft 则使用 %。真是荒谬。 - Ramin Melikov

7

TSQL中,取模运算使用百分号表示。

例如,SELECT 38 % 5会得到取模结果3。


1

对于您的示例,应该是这样的。

DECLARE @m INT
SET @m = 321%11
SELECT @m

1
可以使用%运算符来实现。
SELECT 50 % 5 

-5

如果使用JDBC驱动程序,可以使用如下的函数转义序列:

select {fn MOD(5, 2)}
#Result 1

select  mod(5, 2)
#SQL Error [195] [S00010]: 'mod' is not a recognized built-in function name.

2
不是问题的答案,MOD返回一个数被除数除后的余数。结果始终与除数具有相同的符号。 - Amirhossein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接