DB2 LIKE 带有变量的运算符



我是DB2的新手,DB2在几个IBM iSeries机器上运行。我在编写一个存储过程时遇到一些困难,该过程将从键字段以参数值开头的表中选择值。

现在在MS SQL Server中,我会把它写成:

SELECT field FROM table WHERE fieldB like parm + '%'

因此,对于我的 DB2 进程,我有:

SELECT field FROM table WHERE fieldB like parm || '%'

我不仅在 IBM 文档中找到了这种语法,而且在几个 SO 问题和答案中也发现了这种语法。所以我了解如何将通配符连接到参数值。

不幸的是,当我运行我的创建过程语句时,我收到以下错误:

[SQL0104] 令牌 PARM 无效。有效令牌:用于未规范化 CCSID。

我什至也尝试过执行以下操作:

SET [*some declare variable*] = parm|| '%'

SET srch = CONCAT(parm, '%');

以及在 WHERE 子句中使用 CONCAT 函数:

WHERE fieldB like CONCAT(parm, '%');

每个都返回相同的错误。

那么我可能做错了什么?

应该工作正常...没有你的代码,我无法确切地说出你做错了什么......

请注意,您必须显式声明游标才能返回 Db2 中设置的结果。 由于您没有使用 SELECT INTO,因此我假设您的选择返回多行。

CREATE OR REPLACE PROCEDURE cwilt.myproc(IN parm char(128))
    LANGUAGE SQL
    BEGIN
        DECLARE myRS cursor with return to client for
          select table_name
          from systables
          where table_name like trim(parm) concat '%';
        open myRS;
    END;
call cwilt.myproc(char('SYP'));

尝试从表中选择字段 其中字段 B 喜欢 ? ||'%'

我已经在我的iSeries上使用了它,它应该根据IBM文档工作:

https://www.ibm.com/support/knowledgecenter/SSEPGG_9.8.0/com.ibm.db2.luw.apdv.sqlpl.doc/doc/c0020295.html

相关内容

  • 没有找到相关文章

最新更新