/ / SQL sélectionnant tous les enregistrements avec l'instruction IN - java, sql, sap, portail, webdynpro

SQL sélectionnant tous les enregistrements avec l'instruction IN - java, sql, sap, portail, webdynpro

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 № 1

l'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