在Where子句中传递List时,无效的关系运算符

时间:2017-01-18 06:06:09

标签: oracle

我有以下查询:

SELECT *
FROM TABLE1 TD
WHERE COL1 like '%' ||?|| '%'
AND COL2 like '%' ||?|| '%'
AND ((:statusId) IS NULL) OR ((:statusId) IS NOT NULL AND STATUS_ID IN (:statusId)))
ORDER BY COL1 DESC;

StatusId可以有多个值/单个值或null。当我使用Spring JDBC传递值1,2时,我得到无效的关系运算符。

1 个答案:

答案 0 :(得分:0)

如果您传递的1,2没有撇号,那么问题是(:statusId) IS NULL(:statusId) IS NOT NULL

如果您传递'1,2',则STATUS_ID IN (:statusId)会出现问题,因为它只会在STATUS_ID ='1,2'时相等,而不是在STATUS_ID = 1或STATUS_ID = 2时<。 / p>

考虑到上述所有因素后,您应该使用撇号传递它并将其从最后一位STATUS_ID IN (REPLACE(:statusId,'''',''))

中删除