Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction JPQL LOWER dans l'expression IN

JPQL fonctionne comme prévu. C'est bien interprété, c'est ainsi que la fonction et le paramètre sont définis dans votre code.

Pour obtenir le résultat souhaité avec Oracle, vous pouvez utiliser le type de collection Oracle intégré ODCIVARCHAR2LIST . Donc JPQL ressemblera à ci-dessous :

SELECT e 
FROM   myentity e 
WHERE  Lower(e.myattribute) IN 
       ( 
              SELECT Lower(column_value) 
              FROM   table(sys.odcivarchar2list(?1)))

REMARQUE : Pour Oracle 12.2+, vous n'avez pas besoin de table fonction, donc ci-dessous fonctionnera aussi :

SELECT e 
FROM   myentity e 
WHERE  Lower(e.myattribute) IN 
       ( 
              SELECT Lower(column_value) 
              FROM   sys.odcivarchar2list(?1))