DB2查询功能无法与参数一起使用



我有一个我无法在db2/as400中工作的查询。

select integer(score(ADRLIN1, :param1)*100) as RELEVANCEADR, 
ADRLIN1, PSTCOD from MYSCHEMA.MYTABLE 
where contains(ADRLIN1, :param2) = 1
and pstcod like :param3 
order by RELEVANCEADR desc

当我尝试运行上面的查询并在参数中输入值时,我会得到[SQL0418]使用参数标记无效的使用。

这不是一个大问题。Google搜索告诉我在使用参数之前要施放参数。因此,我将查询更改为:

select integer(score(ADRLIN1, CAST(:param1 AS CHAR))*100) as RELEVANCEADR, 
ADRLIN1, PSTCOD from MYSCHEMA.MYTABLE  
where contains(ADRLIN1, CAST(:param2 AS CHAR)) = 1
and pstcod like :param3 order by RELEVANCEADR desc

具有以下值:

  • param1-> 19 Edgewood Blvd
  • param2-> 19 Edgewood Blvd
  • param3->%68046%

我得到一个空结果集。但是,如果我实际上用文字填充查询,则查询有效。

select integer(score(ADRLIN1, '19 EDGEWOOD BLVD')*100) as RELEVANCEADR, 
ADRLIN1, PSTCOD from MYSCHEMA.MYTABLE
where contains(ADRLIN1, '19 EDGEWOOD BLVD') = 1
and pstcod like '%68046%' 
order by RELEVANCEADR desc

上面的查询返回有效记录。

我的问题是,如何获得分数并包含与参数传递的功能,而不是使用硬编码字符串?

正如@mustaccio在评论中指出的那样,铸造为 CHARCHAR(1)等效的。我更正了以声明实际的长度,并且查询正在工作。

相关内容

  • 没有找到相关文章

最新更新