我想生成从0到9000000的数字。在Oracle中,我可以使用以下代码。我如何在Sybase ASE中做到这一点?
这是Oracle中的:
SELECT level Num
FROM DUAL
CONNECT BY LEVEL <= 9000000
ORDER BY Num;
如何在Sybase ASE中做到这一点?
我不能创建一个表并添加一个标识,因为我需要从1到9000000的数字,所以一个表将是复杂的。是否有查询来执行此操作?
发布于 2017-05-29 15:50:03
在Sybase中,有一个可以用来生成数字的系统过程:行发生器
你本可以这样做:
SELECT row_num FROM sa_rowgenerator( 1, 9000000);
我根本不知道Sybase ASE,所以我搜索了它,发现这个过程在ASE中是不可用的,但是有一个替代方案:
ASE不支持system系统过程sa_rowgenerator、sa_split_list和sa_conn_info。ASE主数据库包含一个表spt_values,该表可用于以类似于sa_rowgenerator过程或system的dbo.row_generator系统表的方式选择整数值。
这个包含整数的表spt_values
是难以置信的没有文档化。就像一张鬼桌。
我建议你试一试:
select number
FROM master.dbo.spt_values
WHERE number BETWEEN 0 AND 9000000
但如果你的数据库系统爆炸,我不负责;-)
https://stackoverflow.com/questions/44028603
复制相似问题