【问题标题】:How to store a list of integers as variable in PostgreSQL如何在 PostgreSQL 中将整数列表存储为变量
【发布时间】:2023-03-30 11:05:01
【问题描述】:

我只是想知道如何将整数列表存储为 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中找不到列表类型。那它的语法是什么?

【问题讨论】:

    标签: postgresql


    【解决方案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] )
    

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

    i
    -
    1
    5
    7
    9
    

    【讨论】:

      【解决方案2】:
      with myconstants (i) as (values(1),(2),(3))
      select A from B, myconstants where C=any(i);
      

      further reading

      【讨论】:

        猜你喜欢
        • 2020-11-01
        • 2021-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-20
        • 1970-01-01
        • 1970-01-01
        • 2016-05-23
        相关资源
        最近更新 更多