De retour,
j'ai pu trouver une "solution" au probleme decrit plus haut. Plus qu'une solution c'est une moyen de contourner ce que je crois etre un bug dans Oracle :
1 2 3 4 5
| Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
PL/SQL Release 10.2.0.5.0 - Production
"CORE 10.2.0.5.0 Production"
TNS for Linux: Version 10.2.0.5.0 - Production
NLSRTL Version 10.2.0.5.0 - Production |
Apres avoir mene quelques experiences j'ai pu constater que Oracle n'apprecie pas certaines expressions.
Imaginons deux elementary attributes Client_id et Client_name.
L'expression suivante est invalide
client_id=1 AND regexp_like(client_name, 'my_reg_expression')
Mais bizarrement les expressions suivantes sont valide
1 2
| client_id=1 AND regexp_like(client_name, 'my_reg_expression') AND regexp_like(client_name, 'my_reg_expression') ;/*Les deux regexp etant totalement identique ...*/
client_id=1 AND regexp_like(client_name, 'my_reg_expression') AND 1=1; |
Plus generalement il semble que Oracle n'apprecie pas vraiment de mettre UNE ET UNE SEULE regexp_like fonction a la FIN de mon expression. En rajoutant d'autres predicats apres ma regexp_like l'expression est systematiquement validee (si l'attribut est correcte evidemment -client_id ou client_name dans l'exemple).
La solution facile est donc de rajouter un 'AND 1=1' a la fin de toute expression invalide, c'est moche mais ca fonctionne.
En esperant que ce post pourra aider quelqu'un, un jour peut etre ...
Partager