5

データベースの作業をしなければならなかったのは久しぶりなので、これをどのように尋ねればよいかよくわかりませんが、過去にやったことがあります。
文字列のリストから一時テーブルを作成するにはどうすればよいですか (CREATE TEMPORARY TABLE を使用しません)。したがって、次のようなものがある場合:

  • '1'、'a'、'A'
    '2'、'b'、'B'
    '3'、'c'、'C'

  • SELECT  field2 
    FROM    { {'1','a','A'}, {'2','b','B'}, {'3','c','C'} } 
            AS fooarray(field1,field2,field3)
    WHERE   field1 = '2'
    -- should return 'b'
    

ヒント: 似ている...

  • SELECT * FROM unnest(array[...]);
    
4

1 に答える 1

13

配列をいじる必要はまったくありません。 VALUESを使用してテーブルをその場で構築できます。

7.7. VALUES リスト

VALUES実際にディスク上にテーブルを作成してデータを入力することなく、クエリで使用できる「定数テーブル」を生成する方法を提供します。

VALUESも参照してください。

したがって、次のようなことができます。

=> 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)

すべてが名前を持つように、VALUES に列名 ( ) を含む完全なエイリアスを与えることを忘れないでくださいt(id, c1, c2)

于 2012-06-05T19:01:22.023 に答える