如何在PostgreSQL中将整数列表存储为变量

时间:2016-07-24 22:57:03

标签: postgresql

我只是想知道如何在PostreSQL存储过程中将整数列表存储为变量。

例如,我有这样的陈述:

   select A from B where C IN (1,2,3);
   select A from B where C IN (1,2);

我想声明一个变量来存储(1,2,3)(1,2)

所以我最终会得到如下声明:

select A from B where C in numberList;

(numberList的值为(1,2,3))

我不知道我应该使用哪种数据类型,我在网上查找并且无法找到psql中的列表类型。那个的语法是什么呢?

2 个答案:

答案 0 :(得分:0)

PostgresSQL Arrays

postgres为表中的数组提供了很好的数据类型。你已经试过了吗?

答案 1 :(得分:0)

您可以在SQL中执行此操作。表格定义如下:

test=> \d in_clauses
   Table "laurenz.in_clauses"
 Column |   Type    | Modifiers
--------+-----------+-----------
 id     | integer   | not null
 list   | integer[] |
Indexes:
    "in_clauses_pkey" PRIMARY KEY, btree (id)

test=> SELECT * FROM in_clauses;
 id |  list
----+---------
  1 | {1,2,3}
  2 |
(2 rows)

test=> \d searched
   Table "laurenz.searched"
 Column |  Type   | Modifiers
--------+---------+-----------
 id     | integer | not null
 val    | integer | not null
Indexes:
    "searched_pkey" PRIMARY KEY, btree (id)

test=> SELECT * FROM searched;
 id | val
----+-----
  1 |   3
  2 |   3
  3 |   4
  4 |   1
  5 |   5
(5 rows)

你可以写(使用“= ANY”代替“IN”):

test=> SELECT searched.id
       FROM searched
          JOIN in_clauses ON (in_clauses.id = 1)
       WHERE val = ANY (list);
 id
----
  1
  2
  4
(3 rows)