对于正常划分:
SELECT mod(6,3) a FROM dual;
我们将得到零。如果我们不是除以 6,而是除以 5 或 4,那么我们分别得到 2 或 1。
有没有一种很好的方法来获得除数(3)而不是零?
作为一种选择:
SELECT case when mod(6,3) = 0 then 3 else mod(6,3) end a FROM dual;
但是这样的设计看起来太繁琐了,而且要分两次。
对于正常划分:
SELECT mod(6,3) a FROM dual;
我们将得到零。如果我们不是除以 6,而是除以 5 或 4,那么我们分别得到 2 或 1。
有没有一种很好的方法来获得除数(3)而不是零?
作为一种选择:
SELECT case when mod(6,3) = 0 then 3 else mod(6,3) end a FROM dual;
但是这样的设计看起来太繁琐了,而且要分两次。
受尊敬的@EzikBro 在评论中建议,解决方案是带偏移量的模数模数。从 1 开始生成子序列的好方法: