我想生成从 0 到 9000000 的数字。在 Oracle 中,我可以使用以下代码。如何在 Sybase ASE 中执行此操作?
这是在 Oracle 中:
SELECT level Num
FROM DUAL
CONNECT BY LEVEL <= 9000000
ORDER BY Num;
如何在 Sybase ASE 中做到这一点?
我无法创建表并添加身份,因为我需要从 1 到 9000000 的数字,因此表会很复杂。是否有查询可以执行此操作?
最佳答案
在 Sybase IQ 中,有一个可用于生成数字的系统过程:sa_rowgenerator
你可以这样做:
SELECT row_num FROM sa_rowgenerator( 1, 9000000);
我根本不知道 Sybase ASE,所以我用谷歌搜索它,发现这个过程在 ASE 中不可用,但存在替代方法:
The SQL Anywhere system procedures sa_rowgenerator, sa_split_list, and sa_conn_info are not supported by ASE. An ASE master database contains a table, spt_values, that can be used to SELECT integer values in a way similar to that of the sa_rowgenerator procedure, or SQL Anywhere’s dbo.row_generator system table.
来源:Migrating SQL Anywhere database applications to ASE
此表
spt_values
包含整数是令人难以置信的没有记录。这就像一张鬼 table 。我建议你试试这个:
select number
FROM master.dbo.spt_values
WHERE number BETWEEN 0 AND 9000000
但如果您的数据库系统爆炸,我概不负责;-)
关于sql - Sybase ASE 按级别等效连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44028603/