在我的情况下,只有前2个参数是必需的。当用户没有给出其余参数时,我会使用charachter'%'对于LIKE语句,将显示所有数据。任何想法如何解决这个IN语句?解决方案参数IN('%')无效=>空
参数:
java.sql.Timestamp,java.sql.Timestamp,java.lang.String,java.lang.String,java.lang.String,java.lang.String
查询:
SELECT *
FROM RC_Recall t INNER JOIN RC_RECALLSTORE s ON t.ID = s.RECALLID
WHERE t.creationdate >= ?1 AND t.enddate <= ?2 AND t.id LIKE ?3
AND t.afdeling IN (?4) AND s.storeid IN (?5)
ORDER BY ID DESC
答案 0 :(得分:1)
SQL中的IN语句不能接受通配符。您必须在查询中添加OR才能使其正常工作...
select *
from RC_Recall t INNER JOIN RC_RECALLSTORE s ON t.ID = s.RECALLID
where t.creationdate >= ?1
AND t.enddate <= ?2
AND t.id LIKE ?3
AND ('%' = ?4 OR t.afdeling IN (?4))
AND ('%' = ?5 OR s.storeid IN (?5))
ORDER BY ID DESC
如果您使用参数位置传递参数,则可能需要将其更改为
AND ('%' = ?4 OR t.afdeling IN (?5))
AND ('%' = ?6 OR s.storeid IN (?7))
希望有所帮助
答案 1 :(得分:0)
相当硬编码查询,您可以根据输入动态构建查询。即,无论哪个输入存在,只在where子句中添加那些标准。