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

Jam*_*Xia 9 postgresql

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

例如,我有这样的陈述:

   select A from B where C IN (1,2,3);
   select A from B where C IN (1,2);
Run Code Online (Sandbox Code Playgroud)

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

所以我最终会得到这样的声明:

select A from B where C in numberList;
Run Code Online (Sandbox Code Playgroud)

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

我不知道我应该使用哪种数据类型,我在网上查了一下,在 psql 中找不到列表类型。它的语法是什么?

小智 1

您可以将它们存储为整数数组(即int[])类型,然后使用 ANY 运算符进行调用,如下所示:

WITH RECURSIVE CTE AS (
    SELECT 1 AS i
        UNION ALL
    SELECT i+1 FROM CTE WHERE i < 15
)
SELECT * FROM CTE WHERE i = ANY( ARRAY[1, 5, 7, 9] )
Run Code Online (Sandbox Code Playgroud)

它返回我们正在寻找的分段动态 IN 运算符结果:

i
-
1
5
7
9
Run Code Online (Sandbox Code Playgroud)