PostgreSQL:如何以表的形式搜索字符串列表?

PostgreSQL:如何以表的形式搜索字符串列表?,sql,postgresql,Sql,Postgresql,我已经有一段时间没有做任何数据库工作了,所以我真的不知道如何问这个问题,我知道我过去也做过。 如何在不使用“创建临时表”的字符串列表中创建临时表?因此,如果您有以下情况: “1”、“a”、“a” “2”、“b”、“b” ‘3’、‘c’、‘c’ 提示:它类似于 您根本不需要处理数组,您可以使用以下方法就地构建表: 7.7。值列表 值提供了一种生成常量表的方法,该表可以在查询中使用,而无需在磁盘上实际创建和填充表 另见 所以你可以这样做: => select * from (

我已经有一段时间没有做任何数据库工作了,所以我真的不知道如何问这个问题,我知道我过去也做过。 如何在不使用“创建临时表”的字符串列表中创建临时表?因此,如果您有以下情况:

“1”、“a”、“a” “2”、“b”、“b” ‘3’、‘c’、‘c’

提示:它类似于


您根本不需要处理数组,您可以使用以下方法就地构建表:

7.7。值列表

值提供了一种生成常量表的方法,该表可以在查询中使用,而无需在磁盘上实际创建和填充表

另见

所以你可以这样做:

=> select *
   from (
       values ('1', 'a', 'A'),
              ('2', 'b', 'B'),
              ('3', 'c', 'C')
    ) as t(id, c1, c2)
    where id = '2';

 id | c1 | c2 
----+----+----
 2  | b  | B
(1 row)

不要忘记为值提供一个别名,该别名包含列名称tid、c1、c2,以便所有内容都有一个名称。

使用unnestFor 1有什么问题,它在多维数组中工作得不太好。但让我们只说我有一个一维数组,我仍然在努力连接现有的表select lowerletter from select*from unnest'{a,B,C}作为foo的字母,其中lowerletter不在select lowerletter from someothertable中;更新:所以我不知道加入的问题是什么,但是现在加入很好。不过,多维度还是有点问题。我只想使用本机函数,避免使用任何类型的存储过程来取消维度的测试。-mu的值是我一直在寻找的,可能是我过去所做的。出于某种原因,我认为我在使用{{},{}}语法,但后来我记得我也使用了值。不管怎样,这就是我需要的。您是否还应该在别名上指定数据类型,例如tid::numeric、c1::text、c2::text?@vol7ron:AFAIK您必须在每个值中指定数据类型,但是您可能不需要它们,类型应该可以很好地推断出来。
SELECT * FROM unnest(array[...]);
=> select *
   from (
       values ('1', 'a', 'A'),
              ('2', 'b', 'B'),
              ('3', 'c', 'C')
    ) as t(id, c1, c2)
    where id = '2';

 id | c1 | c2 
----+----+----
 2  | b  | B
(1 row)