SQL:打印两个数字的常见因素?

时间:2014-04-24 22:17:55

标签: tsql

假设我想知道两个数字20和40的所有常见因素,并编写一个脚本,将它们打印到屏幕上。我知道我可以使用MOD来划分,所以我可以写出20和40中每个数字的一​​个除法,然后检查是否有重复并打印它们,但这需要很多行,是否有更快的方法?

1 个答案:

答案 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的几个例子