Problème de comparaison de numbers avec =, mais OK avec LIKE
Version: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0
Bonjour,
J'ai un drole de résultat à l'execution de la requète suivante:
Il ne me retourne pas de tuple, mais lorsque je mets un LIKE à la place du signe = au niveau de la comparaison des postes , cela fonctionne.
Cela fonctionne avec le signe = dans les conditions suivantes :
Si on met en commentaire une des 2 requetes de l'union ou si on fait assign.m_post_id = po.post_id(+)
Le type de post_id est identique dans toutes les table, c'est du number(6).
Comment cela se fait-il?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| SELECT po.*
FROM P_BREAK_PERIODS bp
, P_PERSONS pe
, (SELECT a.start_date
, a.end_date
, a.m_post_id
, a.person_id
FROM P_ASSIGNMENTS a
WHERE a.sequence <> 99999
UNION
SELECT c.start_date
, c.end_date
, c.m_post_id
, c.person_id
FROM P_CONTRACTS c) assign
, M_POSTES po
, P_ABSENCE_TYPES a
WHERE pe.person_id = bp.person_id
AND pe.person_id = assign.person_id
AND assign.m_post_id = po.post_id
AND TRUNC(NVL(bp.end_date,SYSDATE)) >= TRUNC(assign.start_date)
AND TRUNC(bp.start_date) <= TRUNC(NVL(assign.end_date,SYSDATE))
AND bp.absence_tp_id = a.absence_tp_id(+) |