DB2 中将逗号分隔字符串拆分为集合

最近遇到一个问题,需要将一个输入的字符串 123,456,abc 这样的,转换成查询sql中 in ('123','456','789') 的格式。

折腾了一番后,找到一个适合当前版本的语法。db2版本9.7

SELECT t.item
FROM XMLTABLE(
    'for $i in tokenize($s, ",") return <item>{$i}</item>'
    PASSING '123,456,abc' AS "s"
    COLUMNS item VARCHAR(100) PATH '.'
) AS t;

如上,将上述sql放到in子句中即可。

select * from my_table
where id in (
SELECT t.item FROM XMLTABLE(
'for $i in tokenize($s, ",") return <item>{$i}</item>' PASSING '${ids}' AS "s" COLUMNS item VARCHAR(100) PATH '.' ) AS t
);

这样执行的时候,直接把字符串传进来,也可以正确识别为一个集合了。

posted @ 2025-06-22 18:04  兰溪三日桃花雨  阅读(41)  评论(0)    收藏  举报