Dans mon cas, seuls les 2 premiers paramètres sontobligatoire. Lorsque les utilisateurs n'ont pas indiqué le reste des paramètres, j'utilise le caractère "%" pour l'instruction LIKE afin d'afficher toutes les données. Une idée de comment résoudre ceci pour la déclaration IN? Le paramètre solution IN ("%") ne fonctionne pas => Null
Paramètres:
java.sql.Timestamp, java.sql.Timestamp, java.lang.String, java.lang.String, java.lang.String, java.lang.String
Question:
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
Réponses:
1 pour la réponse № 1l'instruction IN en SQL ne peut pas accepter un caractère générique. Vous devez ajouter un OU à votre requête pour que cela fonctionne ...
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
Si vous utilisez la position de paramètre pour passer des paramètres, vous devrez probablement le changer en
AND ("%" = ?4 OR t.afdeling IN (?5))
AND ("%" = ?6 OR s.storeid IN (?7))
J'espère que cela pourra aider
0 pour la réponse № 2
Requête à codage plutôt difficile, vous pouvez créer une requête de manière dynamique en fonction des entrées. c’est-à-dire quelle que soit l’entrée présente, n’ajouter que les critères de la clause where