我有一个查询,我无法在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]参数标记的使用无效。
这不是一个大问题。谷歌搜索告诉我在使用它们之前先将参数CAST。那么我将查询更改为:
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
使用以下值:
我得到一个空结果集。 然而,如果我实际用文字填写查询,则查询有效。
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
上述查询返回有效记录。
我的问题是,如何获得分数并包含使用传入参数而不是使用硬编码字符串的函数?
答案 0 :(得分:0)
正如@Mustaccio在评论中指出的那样,转换为CHAR
相当于CHAR(1)
。我更正了这个以声明实际长度并且查询正在运行。