我只是想知道如何在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中的列表类型。那个的语法是什么呢?
答案 0 :(得分:0)
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)