首页 > 数据库 > mysql教程 > 如何仅使用查询在 SQL 中生成数字范围?

如何仅使用查询在 SQL 中生成数字范围?

Barbara Streisand
发布: 2025-01-20 03:16:13
原创
553 人浏览过

How Can I Generate a Range of Numbers in SQL Using Only Queries?

纯SQL查询生成数字序列

在SQL中,利用非持久化值(VALUES关键字)和JOIN操作,可以生成指定范围内的数字序列。

简洁方案:

<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>
登录后复制

此方案通过创建四个值的笛卡尔积(分别代表个位、十位、百位和千位)来生成数字范围。ROW_NUMBER()函数按所需顺序分配唯一行号。

详细方案:

<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>
登录后复制

此方案通过将个位、十位、百位和千位的数值相加来显式计算数值。 这两种方案都可以通过WHERE子句扩展来指定数字范围。对于更大的范围,可以创建表值函数来重用代码。

以上是如何仅使用查询在 SQL 中生成数字范围?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板