sql - Sybase ASE 按级别等效连接

标签 sql sybase sap-ase

我想生成从 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/

相关文章:

sql - 在 group by 子句中添加一个常量值列

java - JDBC中如何只设置一些参数就可以调用存储过程

sybase - 如何在 Sybase 中更改表的现有列类型?

sql - 精度和比例命名背后的原因是什么?

sql - 多列中的不同值

java - Sybase JConnect : ENABLE_BULK_LOAD usage

mysql - 故意在没有连接条件的情况下合并 3 个或更多表

sql - 在单个查询中对记录进行分层检索

mysql - 如何将 'not in'语句转换为与group by连接

database - Sybase bcp 错误