SQL使用IN语句选择所有记录

时间:2014-12-16 14:07:11

标签: java sql sap portal webdynpro

在我的情况下,只有前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

2 个答案:

答案 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子句中添加那些标准。