在 SQL 中生成序列数列
本文演示了如何在 SQL 中生成指定范围内的数字序列。 想象一下需要一个从 1000 到 1050 的数字列表,每个数字位于单独的行上。
方法 1:VALUES 和交叉连接
一种技术使用 VALUES
子句创建临时数字集并通过交叉连接将它们组合起来。
<code class="language-sql">WITH x AS (SELECT n FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) v(n)) SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM x ones, x tens, x hundreds, x thousands ORDER BY 1;</code>
这会生成数字 0-9999。 调整 VALUES
子句将输出限制在所需的范围内。
方法二:个别数字表
更明确的方法是使用单独的表来表示个位、十位、百位和千位。
<code class="language-sql">SELECT ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n), (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n), (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n), (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) thousands(n) ORDER BY 1;</code>
这提供了对数字生成过程的精确控制,并且可以轻松扩展到更大的范围。这两种方法都为在 SQL 中创建数值序列提供了灵活的解决方案,可适应不同的需求。
以上是如何在 SQL 中生成指定参数之间的数字范围?的详细内容。更多信息请关注PHP中文网其他相关文章!