在Informix DB中选择硬编码值

问题描述:

我需要在一列中选择硬编码值,因此我可以将它们与Informix DB中的表连接起来。所以我尝试不同的变化,以做这样的事情:在Informix DB中选择硬编码值

select a from (values (1), (2), (3)) ; 

而且我希望得到的结果:

1 
2 
3 

我想在其他数据库这样或那样的我试图将返回值一些其他变化。但是,在Informix中它不起作用。

任何人都可以提出在Informix中工作的解决方案吗?

Informix需要一个实际的查询语句。我认为这会工作:

select a 
from (select 1 as a from systables where tabid = 1 union all 
     select 2 as a from systables where tabid = 1 union all 
     select 3 as a from systables where tabid = 1 
    ) t; 

虽然什么Gordon Linoffsuggests肯定会工作,也有使用特定的Informix的语法提供更紧凑的符号。

例如:

SELECT a 
    FROM TABLE(SET{1, 2, 3}) AS t(a) 

,这将产生一个整数列表很愉快(和简洁)。您可以使用LIST或MULTISET代替SET。与SET不同,MULTISET可以具有重复的元素;列表保留顺序以及允许重复。

很多时候,您不会发现订单不会被简单的值保存 - 只是列表中的一些项目。 SET或MULTISET不保证订单;如果订单很重要,请使用LIST。

有关此信息,请参阅位于Collection Constructors下的IBM Informix 12.10手册。不,不知道你是怎么做到的 - 我开始于SELECT,然后FROM,然后'从收藏变量中选择',然后到'表达';我花了几秒钟茫然地看着那个,然后看着'构造函数表达式'和'集合构造函数'。