假设我想知道两个数字20和40的所有常见因素,并编写一个脚本,将它们打印到屏幕上。我知道我可以使用MOD来划分,所以我可以写出20和40中每个数字的一个除法,然后检查是否有重复并打印它们,但这需要很多行,是否有更快的方法?
答案 0 :(得分:1)
如果您的数据库中有数字表(总是一个很好的工具),那么您可以使用下面的T-SQL轻松完成此操作:
declare @num1 int = 20;
declare @num2 int = 40;
select n.num as commonFactor
from dbo.Nums as n
where (n.num < case when @num1 > @num2 then @num1 else @num2 end)
and @num1 % n.num = 0
and @num2 % n.num = 0
如果你没有数字表,那么很容易创建一个数字表 - 看看SQL, Auxiliary table of numbers的几个例子