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
);
这样执行的时候,直接把字符串传进来,也可以正确识别为一个集合了。
学如逆水行舟,不进则退