在 DB2 SQL 中创建和使用变量

问题描述 投票:0回答:1

我正在尝试创建一个变量以在 db2 sql 的Where子句中使用。一切都运行没有错误,但我没有返回任何结果。您能看一下下面的内容并告诉我哪里出错了吗?

--创建我的测试表

创建表 QTEMP.TESTVAR (CYCLE CHAR(2), BD CHAR(2)); 插入 QTEMP.TESTVAR(循环,BD)值 (01,01),(02,02),(03,03),(04,04),(05,05),(06,06),(07, 07),(08,08),(09,09),(10,10),(11,11),(12,12),(13,13),(14,14),(15,15) ;

--创建我的变量

删除变量SRCCYC;创建变量 SRCCYC CHAR(10) 默认 ' ''13'',''14'',''15'' ';

-- 带变量的 SQL 不起作用

SELECT * FROM QTEMP.TESTVAR WHERE CYCLE IN (SRCCYC);

--这就是我想要它带回来的东西

SELECT * FROM QTEMP.TESTVAR WHERE CYCLE IN ('13','14','15');

sql variables db2
1个回答
0
投票

您没有提及您正在使用的平台和 Db2 版本...

但是,这个

IN ('13','14','15')
是一组硬编码的三个字符串值...

这个

IN (SRCCYC)
是一个只有单个字符串值的集合。

你需要的是这样的:

IN (SRCCYC1, SRCCYC2, SRCCYC3)

根据您的平台和版本,您可能可以使用 JSON_TABLE()、XML_TABLE() 或提供的/现有的/滚动您自己的 SPLIT() 函数将单个字符串拆分为与

 兼容的多行临时表IN ()

© www.soinside.com 2019 - 2024. All rights reserved.