- 类别:
SEQ1 / SEQ2 / SEQ4 / SEQ8¶
返回单调递增整数的序列(带回绕)。回绕发生在整型宽度(1、2、4 或 8 字节)可表示的最大整型之后。
重要
此函数使用序列生成一组唯一的递增整数,但不一定生成无间隙的序列。在处理大量数据时,序列中可能会出现间隙。如果需要完全有序的无间隙序列,请考虑使用 ROW_NUMBER 窗口函数。
有关 Snowflake 中的序列的更多详细信息,请参阅 使用序列。
语法¶
SEQ1( [0|1] )
SEQ2( [0|1] )
SEQ4( [0|1] )
SEQ8( [0|1] )
使用说明¶
如果可选符号实参为 0,则在回绕之后,序列从 0 处继续。如果可选符号实参为 1,则序列将根据给定的整型宽度,以最小的可表示数字继续。
默认符号实参为 0。
示例¶
以下是使用序列的基本示例:
SELECT seq8() FROM table(generator(rowCount => 5)); +--------+ | SEQ8() | |--------| | 0 | | 1 | | 2 | | 3 | | 4 | +--------+SELECT * FROM (SELECT seq2(0), seq1(1) FROM table(generator(rowCount => 132))) ORDER BY seq2(0) LIMIT 7 OFFSET 125; +---------+---------+ | SEQ2(0) | SEQ1(1) | |---------+---------| | 125 | 125 | | 126 | 126 | | 127 | 127 | | 128 | -128 | | 129 | -127 | | 130 | -126 | | 131 | -125 | +---------+---------+
此示例展示了如何使用 ROW_NUMBER 生成无间隙序列:
SELECT ROW_NUMBER() OVER (ORDER BY seq4()) FROM TABLE(generator(rowcount => 10)); +-------------------------------------+ | ROW_NUMBER() OVER (ORDER BY SEQ4()) | |-------------------------------------| | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | +-------------------------------------+