在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
,然后'从收藏变量中选择',然后到'表达';我花了几秒钟茫然地看着那个,然后看着'构造函数表达式'和'集合构造函数'。