gpt4 book ai didi

sql - 如何生成两个数字之间的数字范围?

转载 作者:行者123 更新时间:2023-12-01 16:44:21 24 4
gpt4 key购买 nike

我有两个数字作为用户输入,例如 10001050

如何使用 SQL 查询在单独的行中生成这两个数字之间的数字?我想要这个:

 1000
1001
1002
1003
.
.
1050

最佳答案

使用 VALUES 关键字选择非持久值。然后使用JOIN生成大量组合(可以扩展以创建数十万行甚至更多)。

简短快速的版本(不太容易阅读):

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

Demo

更详细的版本:

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

Demo

这两个版本都可以使用 WHERE 子句轻松扩展,从而将数字的输出限制在用户指定的范围内。如果你想重用它,你可以为它定义一个表值函数。

关于sql - 如何生成两个数字之间的数字范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21425546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com