Auteur de questions
Filtrage inopérant entre une donnée issue d'un lien Oracle et SQL Server

Question
-
Bonjour,
Je suis confronté à un problème incompréhensible.
Dans une requête SQL, je fais un lien entre une table MSSQL et une table Oracle.
Sur une colonne de la table Oracle je fais un filtre sur une valeur numérique.
Concrètement, je fais un : "AND d.nodos = 9885"
Ce filtre ne fonctionne pas. Si je supprime ce filtre, la ligne s'affiche.
Si je fais un AND d.nodos > 9884 la ligne s'affiche
Si je fais un AND d.nodos < 9886 la ligne s'affiche
Si je fais un AND d.nodos = 9885 la ligne ne s'affiche pas.
J'ai tenté de convertir par un cast, aucun changement.
J'ai vérifié que cette donnée nodos n'avait pas de caractères spéciaux renvoyés lors de passage du DbLink
Bref je suis un peu perdu. Vous y voyez une raison ?
Merci
Toutes les réponses
-
-
-
êtes vous sûres qu'elle est déclarée comme NUMBER(6) ?
je pense que c'est un problème de précision et scale (Exemple : Précision 8, scale 3: 99999.999)
Et dans votre cas a valeur n'est pas effectivement 9885 mais peut être égale à 9884.99999 selon le Scale déclaré pour la colonne.
f.belhocine
-
-
Si j'ai bien compris vous avez même testé avec la fonction ROUND
AND ROUND(d.nodos)=9885 mais ça ne marche pas.
A mon avis tentez de faire la comparaison du ROUND(d.nodos) avec 9885 et 9886 pour pouvoir éliminer le problème de précision.
Une autre proposition est de faire carrément une requête UPDATE sur la ligne pour mettre à jour la colonne à la valeur 9885 directement à partir d'un éditeur SQL.
f.belhocine