【问题标题】:SQL / DB2 Array in Where declared in withSQL / DB2 数组在 Where 中声明
【发布时间】:2021-10-25 10:33:08
【问题描述】:

任何人都知道使用参数/变量查询的解决方法,以便在 db2 v11 上的函数中使用 where [...]?

我尝试了什么:

DECLARE @list varchar(23) = '1,2,3,4'
SELECT ...FROM tbl WHERE col IN (@list)
WITH test(val) AS (VALUES(ARRAY['5','9']))
SELECT ... FROM table, test WHERE col ANY(val)

两者都不起作用,第一个与 db2 不兼容,第二个不起作用,因为他无法拆分值。

有什么想法或例子吗?

【问题讨论】:

    标签: sql arrays db2


    【解决方案1】:

    试试这个:

    SELECT t.*
    FROM tbl t
    WHERE EXISTS
    (
      select 1
      from xmltable
      (
      'for $id in tokenize($s, ",") return <i>{string($id)}</i>' 
      passing '1,2,3,4' as "s"
      columns 
        tok int path '.'
      ) v
      where v.tok = t.col
    );
    

    如果您想在运行时将整数列表作为逗号分隔的字符串提供,您可以使用参数标记而不是字符串常量 1,2,3,4,就像通常的字符串参数一样。

    【讨论】:

      【解决方案2】:

      声明本地临时表并在其中插入您的值列表?

      【讨论】:

        猜你喜欢
        • 2020-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-09
        • 1970-01-01
        • 1970-01-01
        • 2017-04-07
        相关资源
        最近更新 更多