MSSQL数据库求余技巧简介(mssql 求余)
MSSQL数据库求余技巧简介
MSSQL是一种Microsoft公司开发的数据库,拥有很多丰富的功能,这其中包含了求余技巧,我们可以利用它实现程序中复杂的分支流程。
首先详细介绍下MSSQL的求余操作,通常使用的是Mod(模)语法实现求余,形式为: MOD ,其中和可以是任何有效的MSSQL表达式,返回值为表达式1除以表达式2的余数,或者可以理解为从表达式1中去掉表达式2的整数倍,剩下的就是余数。例如:
SELECT 11 MOD 3,
返回结果为2。
针对求余操作,MSSQL提供了专门的函数,函数名为REMAINDER,函数定义为:
REMAINDER (Float_Real_1, Float_Real_2),
Float_Real_1表示除数,Float_Real_2表示被除数,返回结果与MOD语法类似都是余数,但有些不同的是是地方,REMAINDER函数会根据被除数的符号而改变返回结果;也就是说如果被除数为负,结果为负,否则结果为正。例如:
SELECT REMAINDER(9, -2),
返回结果为1。
求余操作不仅针对两个表达式有效,也对一个表达式对求余有效,例如:
SELECT 11 MOD 5,
返回结果为1,
或者
SELECT 11 MOD 3 * 5,
返回结果也是1。
以上就是MSSQL数据库求余技巧的简介,其一般的应用是做用于循环,根据循环次数的余数判断每次循环后应该发生的任务,例如:
— 例1:根据变量interval的余数确定每次循环发生的任务
DECLARE @CurrentIndex INT, @interval INT
SET @CurrentIndex = 1
SET @interval = 10
WHILE @CurrentIndex
BEGIN
IF (@CurrentIndex % @intervalMOD 0) = 0
BEGIN
— 每隔10次循环做打印任务
PRINT ‘第’ + CAST(@CurrentIndex AS VARCHAR(30)) + ‘次循环做打印任务’
END
ELSE
BEGIN
PRINT ‘第’ + CAST(@CurrentIndex AS VARCHAR(30)) + ‘次循环做其他任务’
END
SET @CurrentIndex = @CurrentIndex + 1
END
另外,MSSQL还提供了专门的T-SQL求余函数,比如数学上的”绝对值计算”。对于绝对值计算,T-SQL提供了一个函数ABS,它将不正值变成正值,用法是:
ABS(‘表达式’),
如:
SELECT ABS(-1),
返回结果为1。
总之,MSSQL求余技术可以很好地实现复杂的循环逻辑,节省很多编码成本,有着重要的应用价值。