选择没有表的硬编码值


70

我需要运行一个选择而不实际连接到任何表。我只需要预定义一组硬编码的值即可:

foo
bar
fooBar

我想遍历这些值。我可以:

select 'foo', 'bar', 'fooBar';

但这将其返回为一行:

 ?column? | ?column? | ?column? 
----------+----------+----------
 foo      | bar      | fooBar
(1 row)

我正在使用Postgresql。

Answers:



28

使用 unnest()

将数组扩展为一组行

select unnest(array['foo', 'bar', 'fooBar']);

演示


2
当只有一个值需要取消嵌套时,这很好用;但是当您必须提供多个值时,由于您必须将值分成许多不同的嵌套,因此很快变得不可读
Luke

1
最简单和完整的语法SELECT x, 2 y FROM unnest('{1,2,3}'::int[]) t(x);
Peter Krauss

@Luke使用我的说明t(x)t2(x)等,您可以用横向JOIN,CROSS JOIN,相交,等等,并表示数据类型。
彼得·克劳斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.