numbers 表函数
-
numbers()– 返回一个只有一列number(UInt64)的无限行表,其中包含从 0 开始按升序排列的整数。使用LIMIT(以及可选的OFFSET)来限制行数。 -
numbers(N)– 返回一个只有一列number(UInt64)的表,其中包含从 0 到N - 1的整数。 -
numbers(N, M)– 返回一个只有一列number(UInt64)的表,其中包含从N到N + M - 1的M个整数。 -
numbers(N, M, S)– 返回一个只有一列number(UInt64)的表,其中包含区间[N, N + M)内、按步长S递增的值(大约M / S行,向上取整)。S必须>= 1。
这类似于 system.numbers 系统表。它可用于测试和生成连续的值。
以下查询是等价的:
下列查询也都是等价的:
下列查询也是等价的:
示例
前 10 个数字。
生成 2010-01-01 至 2010-12-31 的日期序列。
找到第一个 UInt64 >= 10^15,其 sipHash64(number) 结果的二进制形式末尾有 20 个连续的 0 位。
注意事项
- 出于性能考虑,如果你知道需要多少行,优先使用有界形式(
numbers(N)、numbers(N, M[, S])),而不是无界的numbers()/system.numbers。 - 若要进行并行生成,可以使用
numbers_mt(...)或system.numbers_mt表。请注意,结果返回的顺序可能是不确定的。