SQL / DB2 数组在 Where 中声明
Posted
技术标签:
【中文标题】SQL / DB2 数组在 Where 中声明【英文标题】:SQL / DB2 Array in Where declared in with 【发布时间】: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 不兼容,第二个不起作用,因为他无法拆分值。
有什么想法或例子吗?
【问题讨论】:
【参考方案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】:声明本地临时表并在其中插入您的值列表?
【讨论】:
以上是关于SQL / DB2 数组在 Where 中声明的主要内容,如果未能解决你的问题,请参考以下文章