我有以下查询:
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时,我得到无效的关系运算符。
答案 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,'''',''))